Search code examples
javaarraysformattingtext-filesbufferedwriter

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?


Solution

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