将多维数组写入文本文件

时间:2015-11-07 03:03:02

标签: java arrays formatting text-files bufferedwriter

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

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

当前代码

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()方法。那我怎么能这样做呢?

4 个答案:

答案 0 :(得分:1)

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

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

这就是一个简单的三元运算符:

if j是最后一个索引:

  • 不打印任何内容(

<强> 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] + ",");
    }
}

答案 1 :(得分:0)

将矩阵[i] .length与j进行比较,然后确定打印&#34;,&#34;或不。

答案 2 :(得分:0)

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

希望这有帮助!

答案 3 :(得分:0)

您可以尝试在迭代中添加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?
    }
}

希望它有效!。