将多维数组写入文本文件文件

Writing multi-dimensional array into text file file

我有一项任务涉及将数组值(写入)传递到 Java 中的文本 (.txt) 文件中。这是我第一次使用 BufferedWriter 并且我已经尝试了很多 if 语句的变体,但是在它命中之前看不到让我的程序以 matrix[i][j] + "," 格式编写最后一列索引并写入 整数后不带 逗号。

我尝试使用 BufferedWriter 扩展的 append() 方法,但我认为我没有正确使用它。

当前代码

void writeMatrix(String filename, int[][] matrix) {
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(filename));

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                    bw.write(matrix[i][j] + ",");
            }
            bw.newLine();
        }
        bw.flush();
    } catch (IOException e) {}
}

当前输出

1,2,3,
4,5,6,
7,8,9,

我需要每行的最后一位 不包括逗号 并且 BufferedWriter 显然不喜欢将两个 write() 方法加在一起同一条线。那我该怎么做呢?

您可以将最里面的 for 循环更改为:

for (int j = 0; j < matrix[i].length; j++) {
    bw.write(matrix[i][j] + ((j == matrix[i].length-1) ? "" : ","));
}

这会放入一个简单的三元运算符来执行此操作:

if j 是最后一个索引:

  • 什么都不打印 (</code>)</li> </ul> <p><strong><code>else

    • 打印逗号 (,)

    根据要求,这相当于此 if-else 声明:

    for (int j = 0; j < matrix[i].length; j++) {
        if(j == matrix[i].length-1) {
            bw.write(matrix[i][j]);
        } else {
            bw.write(matrix[i][j] + ",");
        }
    }
    

比较matrix[i].length与j,判断是否打印","

您只需添加一个 if-else 语句来决定是否打印逗号。

希望对您有所帮助!

您可以尝试在迭代中添加 if 语句。如果 j 在最后一列中,它不会将逗号打印到您的文件中,否则它会打印。

void writeMatrix(String filename, int[][] matrix) {
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(filename));

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if(j == matrix[i].length - 1){    
                    bw.write(matrix[i][j]);
                } else{
                    bw.write(matrix[i][j] + ",");
                }        
            }
            bw.newLine();
        }
        bw.flush();
    } catch (IOException e) {
        //why does the catch need its own curly?
    }
}

希望有用!