在 StringBuilder 中分隔行

Separating rows in StringBuilder

我正在学习 Java 并且我在矩阵形状的文本文件上写 2D_array 时碰巧遇到了问题;即每行单独一行。

MWE:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Lect14_Arrays {

    public static void main(String[] args) throws FileNotFoundException {
        int supNode = 4;
        int demNode = 4;
        int goods = 3;

        int[][][] Q = new int[supNode][demNode][goods];
        int[][] gDem = new int[demNode][goods];

        Scanner in = new Scanner(new BufferedReader(new FileReader("Q.txt")));
        while (in.hasNextLine()) {
            for (int i = 0; i < Q.length; i++) {
                for (int j = 0; j < Q[0].length; j++) {
                    String[] line = in.nextLine().trim().split(" ");
                    for (int g = 0; g < line.length; g++) {
                        Q[i][j][g] = Integer.parseInt(line[g]);
                    }
                }
            }
        }

        for (int j = 0; j < Q[0].length; j++) {
            for (int i = 0; i < Q.length; i++) {
                for (int g = 0; g < goods; g++) {
                    gDem[j][g] += Q[i][j][g];
                }
            }
        }

        File gdFile = new File("gDem.txt");
        StringBuilder sB4 = new StringBuilder();
        try (BufferedWriter br4 = new BufferedWriter(new FileWriter(gdFile))) {
            for (int j = 0; j < gDem.length; j++) {
                for (int g = 0; g < gDem[0].length; g++) {
                    sB4.append(gDem[j][g]).append(" ");
                }
            }
            br4.write(sB4.toString().trim());
            br4.close();
        } catch (IOException e) {
            System.out.println("Unable to write : " + gdFile.toString());
        }
    }
}

Q[][][]矩阵保存在Q.txt文件中如下:

3 3 4 
10 8 2
4 3 3
9 5 16
2 1 2
0 3 0 
1 2 1
12 12 12
0 1 3 
1 7 1 
1 1 6 
9 9 14
8 4 0 
2 5 0 
7 6 7 
9 9 9

gDem 被写入 gDem.txt 文件如下:

13 9 9 13 23 3 13 12 17 39 35 51

我的问题是如何将gDem的内容写入并保存如下:

13 9 9 
13 23 3
13 12 17
39 35 51

非常感谢您的回答。

此致, 博尔奈

如果你想在 sB4 中换行,那么你应该附加换行,即

sB4.append(System.lineSeparator());

StringBuilder、[=12= 中完成每个 的追加后,您必须追加 换行符 ]

for (int j = 0; j < gDem.length; j++) {
    for (int g = 0; g < gDem[0].length; g++) {
        sB4.append(gDem[j][g]).append(" ");
    }
    sB4.append(System.lineSeparator());//add new line to move to next row
}