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

Java 将多维数组写入文本文件,java,arrays,formatting,text-files,bufferedwriter,Java,Arrays,Formatting,Text Files,Bufferedwriter,我有一项任务,涉及将数组值(写入)传递到Java中的文本(.txt)文件中。这是我第一次使用BufferedWriter,我在if语句上尝试了很多变体,但我无法让我的程序以matrix[I][j]+“,”的格式编写,直到它到达最后一列索引,并在整数后不使用逗号进行写入 我尝试使用BufferedWriter扩展的append() 当前代码 void writeMatrix(String filename, int[][] matrix) { try { BufferedW

我有一项任务,涉及将数组值(写入)传递到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) {}
}

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

您可以将最内层的
for
循环更改为:

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

比较矩阵[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?
    }
}
void writeMatrix(字符串文件名,int[][]矩阵){
试一试{
BufferedWriter bw=新的BufferedWriter(新的FileWriter(文件名));
对于(int i=0;i

希望它能奏效

成功了!但我不确定我是否理解问号和冒号后面的语法,我以前从未见过它们的用法?它本质上是一个缩短的
if-else
语句。我会为你提供一个更简单的选择。欢迎来到SO社区(别担心,你的帖子格式不错)!我很高兴我帮了忙(别忘了接受),今天过得很愉快!“将数组传递到txt文件”这句话很尴尬。传递是指将值或引用(通常是驻留在内存中的数据结构)传递给另一个进程或例程,例如传递参数。您不会将数据结构“传递”到持久性存储(如文件)。
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] + ",");
    }
}
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?
    }
}