Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据从文本文件加载到数组中_Java_Arrays_Split - Fatal编程技术网

Java 将数据从文本文件加载到数组中

Java 将数据从文本文件加载到数组中,java,arrays,split,Java,Arrays,Split,我正在努力完成一项工作,我需要将数据从一个文本文件加载到一个数组中,我已经设法将数据加载到java并打印出来,但是现在需要将数据拆分并传递到另一个类。我尝试使用.split(“”),但数据不共享相同数量的空白,因此我最终得到了一个巨大的数组,其中一半由包含两个数据量或仅一个空白的条目填充。以下是我目前掌握的代码: import java.io.*; public class Reader { int i= 0; int k=0; static String test;

我正在努力完成一项工作,我需要将数据从一个文本文件加载到一个数组中,我已经设法将数据加载到java并打印出来,但是现在需要将数据拆分并传递到另一个类。我尝试使用
.split(“”
),但数据不共享相同数量的空白,因此我最终得到了一个巨大的数组,其中一半由包含两个数据量或仅一个空白的条目填充。以下是我目前掌握的代码:

import java.io.*;

public class Reader {

    int i= 0;
    int k=0;
    static String test;

    public static void main(String[] Args){ 

    String file ="1RainfallSample.txt";        

    //reading   
    try{
        InputStream ips=new FileInputStream(file); 
        InputStreamReader ipsr=new InputStreamReader(ips);
        BufferedReader br=new BufferedReader(ipsr);
        String line;
        while ((line=br.readLine())!=null){
        test+=line+"\n";
        }
        br.close(); 

    }       
    catch (Exception e){
        System.out.println(e.toString());
    } 

    // split(String Delimiter)
    String[] dataArray=test.split("\\s");
    System.out.println("Array :"+dataArray.length);
    for(int i=0;i<dataArray.length;i++)
    {
        System.out.println("array"+i+"  :"+dataArray[i]);
    } 

    }
}
我觉得我的方法不对,正如你所说,我不是一个好的程序员,只要朝着正确的方向轻推一下就好了。

你可以使用

String[] dataArray = test.split("\\s+");
以消除多余的空白。

您可以使用

String[] dataArray = test.split("\\s+");

清除多余的空白。

或者,如果要整理数据,可以匹配重复的空格并删除它们,或者替换为单个空格

首先确保文本位于字符串变量中,然后:

Val = Val.replaceAll(" {2,}", " ");

或者,如果要整理数据,可以匹配重复的空间并将其删除或替换为单个空间

首先确保文本位于字符串变量中,然后:

Val = Val.replaceAll(" {2,}", " ");

首先更改test+=line+“”因为您需要delimeter的空间。并且您可以在split内部使用regex。对于spaces.split(“\s+”),它将使用空格作为splitfirst change test+=line+”,因为您需要delimeter的空间。并且您可以在split内部使用正则表达式。对于空格。split(“\s+”)它将使用空格作为split。你们这些家伙回答问题很快!:)程序员有太多的空闲时间。哈哈,对你们两个来说都很好,这是一种享受。我现在有一个760个ish条目的数组,而不是3000个ish条目的数组,现在来研究如何将这些数据传递给days类:p。非常感谢。我想问的一个后续问题是如何将字符串数组转换为浮点,“public float[](string dataArray[i]);“我尝试将其放入for循环,但没有结果:\@earlemongrab:您可以声明一个
float[]floatArray=new float[dataArray.length]
并使用
floatArray[i]=float.valueOf(dataArray[i])
。天哪,你们这些家伙回答问题很快!:)程序员有太多的空闲时间。哈哈,对你们两个来说都很好,这是一种享受。我现在有一个760个ish条目的数组,而不是3000个ish条目的数组,现在来研究如何将这些数据传递给days类:p。非常感谢。我想问的一个后续问题是如何将字符串数组转换为浮点,“public float[](string dataArray[i]);“我尝试将其放入for循环,但没有结果:\@earlemongrab:您可以声明一个
float[]floatArray=new float[dataArray.length]
并使用
floatArray[i]=float.valueOf(dataArray[i])
。谢谢@ridoy。我不知道如何在移动应用程序上标记代码块。谢谢@ridoy。我不知道如何在移动应用程序上标记代码块。