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()将它们分开?