Java 从逗号分隔的文本文件读取数组
要在逗号分隔的文本文件中打印出矩阵,但此代码将打印出全零的矩阵,而该矩阵不是文本文件中的矩阵Java 从逗号分隔的文本文件读取数组,java,arrays,Java,Arrays,要在逗号分隔的文本文件中打印出矩阵,但此代码将打印出全零的矩阵,而该矩阵不是文本文件中的矩阵 public int[][] readFromFile() throws FileNotFoundException { Scanner in = new Scanner(new File("C:\\Users\\Aidan\\Documents\\NetBeansProjects\\matrix\\src\\matrix\\newfile")); int[][] a = new int
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;
}
假设csv文件中有多行:
1,2,3,4,5,6,7,8,9
2,3,4,5,6,7,8,9,1
3,4,5,6,7,8,9,1,2
...
您应该能够执行以下操作:
int[][] a = new int[9][9];
Scanner in = new Scanner(new File("C:\..."));
for (int i = 0; i < 9; i++) {
String[] line = in.nextLine().split(",");
for (int j = 0; j < 9; j++) {
a[i][j] = Integer.parseInt(line[j]);
}
}
int[]a=新的int[9][9];
Scanner in=new Scanner(新文件(“C:\…”);
对于(int i=0;i<9;i++){
字符串[]line=in.nextLine().split(“,”);
对于(int j=0;j<9;j++){
a[i][j]=整数.parseInt(第[j]行);
}
}
这是最小值,不包括错误检查,如果csv中的一行少于9个逗号分隔的数字,程序将崩溃。假设csv文件中有多行:
1,2,3,4,5,6,7,8,9
2,3,4,5,6,7,8,9,1
3,4,5,6,7,8,9,1,2
...
您应该能够执行以下操作:
int[][] a = new int[9][9];
Scanner in = new Scanner(new File("C:\..."));
for (int i = 0; i < 9; i++) {
String[] line = in.nextLine().split(",");
for (int j = 0; j < 9; j++) {
a[i][j] = Integer.parseInt(line[j]);
}
}
int[]a=新的int[9][9];
Scanner in=new Scanner(新文件(“C:\…”);
对于(int i=0;i<9;i++){
字符串[]line=in.nextLine().split(“,”);
对于(int j=0;j<9;j++){
a[i][j]=整数.parseInt(第[j]行);
}
}
这是最小值,不包括错误检查,如果csv中的一行少于9个逗号分隔的数字,程序将崩溃。我建议使用类似apache commons csv库的方法来处理类似的问题。为什么要重新发明轮子?@user1875195完全正确。我见过太多的手工构建的代码在一个csv文件中工作,在下一个csv文件中失败。很少有应用程序严格遵守csv标准,因此您需要一个能够处理变化的解析器。大多数手工构建的解析器都无法处理(一、二、三)和(“一、七、二、三”),这两个都是有效的csv。为了帮助您解决这个问题,我们需要查看您正在导入的csv文件和输出(特别是println(word)的输出)。请发布输入文件,并告诉我们您试图实现什么。只有当逗号被空格包围时,您的方法才有效。很难弄清楚数组的目标是什么,而且编写数组的方式看起来很奇怪。事实上,您并不是在编写每个元素,只是从0,0,1,1,2,2,3,3,4,4,5,5对角开始编写?为什么不加载整个文件,然后使用String.split()将它们分开?我建议使用类似apache commons csv库的方法来实现类似的功能。为什么要重新发明轮子?@user1875195完全正确。我见过太多的手工构建的代码在一个csv文件中工作,在下一个csv文件中失败。很少有应用程序严格遵守csv标准,因此您需要一个能够处理变化的解析器。大多数手工构建的解析器都无法处理(一、二、三)和(“一、七、二、三”),这两个都是有效的csv。为了帮助您解决这个问题,我们需要查看您正在导入的csv文件和输出(特别是println(word)的输出)。请发布输入文件,并告诉我们您试图实现什么。只有当逗号被空格包围时,您的方法才有效。很难弄清楚数组的目标是什么,而且编写数组的方式看起来很奇怪。事实上,您并不是在写每个元素,只是从0,0,1,1,2,2,3,3,4,4,5,5对角开始写?为什么不加载整个文件,然后使用String.split()将它们分开?