0

我在从文本文件中读取数据并将其放入二维数组时遇到问题。数据集的样本是:

1,2,3,4,5,6

1.2,2.3,4.5,5.67,7.43,8

这段代码的问题是它只读取了第一行而不读取下一行。任何建议表示赞赏。

package test1;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test1{ 

public static void main(String args[])throws FileNotFoundException, IOException{
try{    
   
double[][] X = new double[2][6];
BufferedReader input = new BufferedReader(new FileReader(file));

String [] temp;
String line = input.readLine();
String delims = ",";
temp = line.split(delims);
int rowCounter = 0;
while ((line = input.readLine())!= null) {
for(int i = 0; i<6; i++){
X[rowCounter][i] = Double.parseDouble(temp[i]);
}
    
rowCounter++;
} 

}catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
}finally{
}
}
}
4

5 回答 5

2

您是否尝试过 Array 实用程序?像这样的东西:

while ((line = input.readLine())!= null) {  
  List<String> someList = Arrays.asList(line.split(","));
  //do your conversion to double here
  rowCounter++;
}

我认为空白行可能会让你的 for 循环关闭

于 2013-03-07T18:08:53.300 回答
1

尝试:

int rowCounter = 0;
while ((line = input.readLine())!= null) {
String [] temp;
String line = input.readLine();
String delims = ",";
temp = line.split(delims);
for(int i = 0; i<6; i++){
X[rowCounter][i] = Double.parseDouble(temp[i]);
}
...
于 2013-03-07T18:06:16.257 回答
1

temp分配数组的唯一位置是while循环之前。您需要temp在循环内分配数组,并且不要从BufferedReaderuntil 循环中读取。

String[] temp;
String line;
String delims = ",";
int rowCounter = 0;
while ((line = input.readLine())!= null) {
    temp = line.split(delims);  // Moved inside the loop.
    for(int i = 0; i<6; i++){
    X[rowCounter][i] = Double.parseDouble(temp[i]);
}
于 2013-03-07T18:11:41.550 回答
0

readLine 期望在行尾有一个换行符。您应该放置一个空行来读取最后一行或使用 read 代替。

于 2013-03-07T18:17:02.007 回答
0

我无法运行代码,但您的一个问题是您只拆分了第一行文本。

package Test1;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test1 {

    public static void main(String args[]) {
        try {
            double[][] X = new double[2][];
            BufferedReader input = new BufferedReader(new FileReader(file));

            String line = null;
            String delims = ",";

            int rowCounter = 0;
            while ((line = input.readLine()) != null) {
                String[] temp = line.split(delims);
                for (int i = 0; i < temp.length; i++) {
                    X[rowCounter][i] = Double.parseDouble(temp[i]);
                }
                rowCounter++;
            }

        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        } finally {
        }
    }
}

我格式化了您的代码以使其更具可读性。

我推迟设置二维数组的第二个元素的大小,直到我知道一行上有多少个数字。

于 2013-03-07T18:18:12.747 回答