【发布时间】:2016-03-12 00:29:32
【问题描述】:
想要在逗号分隔的文本文件中打印出一个矩阵,但是此代码将打印出全为零的矩阵,这不是文本文件中的矩阵。
public int[][] readFromFile() throws FileNotFoundException {
Scanner in = new Scanner(new File("C:\\Users\\Aidan\\Documents\\NetBeansProjects\\matrix\\src\\matrix\\newfile"));
int[][] a = new int[9][9];
while (in.hasNext()) {
String word = in.next();
if (word.equals(",")) {
continue;
}
System.out.println(word);
int x = 0;
int y = 0;
//System.out.println(Integer.parseInt(word));
int s = Integer.parseInt(word);
a[x++][y++] = s;
}
return a;
}
【问题讨论】:
-
我建议使用 apache commons csv library 之类的东西来做这样的事情。为什么要重新发明轮子?
-
@user1875195 是完全正确的。我见过太多适用于一个 csv 文件而无法用于下一个文件的手工构建代码。很少有应用程序严格遵守 csv 标准,因此您需要一个可以处理变化的解析器。大多数手工构建的解析器都无法处理(一,二,三)和(“一,七”,二,三),这两者都是有效的csv。
-
为了帮助您解决问题,我们需要查看您正在导入的 csv 文件和输出(尤其是 println(word) 的输出)
-
能否请您发布输入文件,并告诉您要实现什么目标。仅当逗号被空格包围时,您的方法才有效。很难弄清楚你对数组的目标是什么,而且你编写数组的方式看起来很奇怪。实际上,您并没有写每个元素,只是从 0,0, 1,1, 2,2, 3,3, 4,4, 5,5 对角线?
-
为什么不加载整个文件,然后使用 String.split() 将它们分开?