【发布时间】:2017-10-16 20:33:06
【问题描述】:
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
int[] data = null;
while((line = in.readLine()) != null) {
String[] a = line.split(","); //read in all numbers in file
data = new int[a.length]; //convert those numbers from Strings to ints
for(int i = 0; i < a.length; i++) {
data[i] = Integer.parseInt(a[i]);
System.out.print(data[i] + ","); //testing
}
}
System.out.println();
for(int i = 0; i < data.length; i++) {
System.out.print(data[i] + ",");
}
一个文件只包含 1 行以逗号分隔的数字,例如:
5,4,
1,-1,-1,1,1,
1,0,3,4,1,
1,0,2,2,1,
1,1,1,1,1,
程序创建一个只包含数字的字符串数组,然后以相同的顺序创建一个整数数组。但是将字符串更改为 int,然后验证 int 数组是否包含文件中的值,打印出 int 数组。
此代码输出:
5,4,1,-1,-1,1,1,1,0,3,4,1,1,0,2,2,1,1,1,1,1,1,
1,1,1,1,1,
如您所见,第一行数字对应于 while 块内的打印函数,可以正确打印。但是当数组在while块外再次迭代打印出来的时候,突然就完全不一样了,为什么会这样呢?数组在 while 块之外应该是相同的。
【问题讨论】:
-
请确认您的文件内容。在我看来,好像您在单独的行上有一个换行符
1,1,1,1,1。这将导致问题,因为data会在读取每一行时重新初始化。 -
5,4, 1,-1,-1,1,1, 1,0,3,4,1, 1,0,2,2,1, 1,1,1, 1,1,
-
如果内容正是您刚刚发布的内容,您将获得
NumberFormatException。我已经尝试过您的代码,它适用于格式正确的文本文件(单行,没有额外的空格)。