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

时间:2017-08-27 01:45:30

标签: arrays filewriter bufferedwriter

我有一个像{ 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();
        }
    }

2 个答案:

答案 0 :(得分:1)

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

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

但是,这适用于您拥有的特定数据集。很难知道如何在不知道你想要解决的具体问题的情况下进一步提供帮助,例如要写多少行以及每行应该放什么,但希望你能得到这个想法,并且能够适应你的想法。具体问题。而不是硬编码'4'作为循环控制和增量,我猜你可能会使用'div'或'mod'运算符来计算'4'应该是什么。

答案 1 :(得分:1)

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