如何使用 Java 中的特定顺序使用 'BufferedWriter' 编写数组

How to write an array using 'BufferedWriter' using a specific order in Java

我有一个像 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 } 这样的数组。我想按以下顺序将此数组写入文本文件。

1 5 9
2 6 10
3 7 11
4 8 12

我试过以下代码。但是我无法得到这样的输出。我有一个很大的数据集,我想按照上面的顺序把它们记在一个文本文件中。

public void writeFile() {

        try {
            File file = new File("D:/test.txt");
            file.createNewFile();

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);

            int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
            for (int i = 0; i < num.length; i++) {

                bw.write(String.valueOf(num[i]));
                bw.newLine();
            }
            bw.write('\n');
            System.out.println();
            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

对于这个特定问题,您可以尝试在循环中循环,例如:

for (int i = 0; i < 4; i++) {
    for (j = 0; j < num.length; j += 4) {
        bw.write(String.valueOf(num[i + j]) + ' ');
    }
    bw.newLine();
}

但是,这适用于您拥有的特定数据集。在不知道您要解决的具体问题(例如要写多少行以及每行要放什么)的情况下,很难知道如何进一步提供帮助,但希望您能理解并能够根据您的需要进行调整具体问题。我猜您可能会使用 'div' 或 'mod' 运算符来计算“4”的真正含义,而不是将“4”硬编码为循环控制和增量。

public static void tst() {
    int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

    int cs = 3, rs = num.length / cs;

    for (int r = 0; r < rs; r++) {
        for (int c = 0; c < cs; c++) {
            System.out.print(num[c*(cs+1)+r]);
            System.out.print(" ");
        }
        System.out.print("\n");
    }
}
1 5 9 
2 6 10 
3 7 11 
4 8 12