Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing multi-dimensional array into text file file

I have a task which involves passing array values (writing) into a text (.txt) file in Java. This is my first time using BufferedWriter and I've tried quite a few variations on if statements, but can't see to get my program to write in the format matrix[i][j] + "," until it hits the last column index and writes without the comma after the integer.

I tried using the append() method that BufferedWriter extends but I don't think I used it correctly.

Current Code

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) {}
}

Current Output

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

I need the last digit on each line to not include the comma and BufferedWriter apparently doesn't like to add two write() methods together on the same line. So how could I do this?

like image 604
Cyka bLyat Avatar asked Dec 29 '25 20:12

Cyka bLyat


1 Answers

You can change your innermost for loop to this:

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

This puts a simple ternary operator in that does this:

if j is last index:

  • print nothing ()

else

  • print a comma (,)

On request, this would be the equivalent to this if-else statement:

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] + ",");
    }
}
like image 143
Jonathan Lam Avatar answered Jan 01 '26 09:01

Jonathan Lam