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

问题描述:

我有一个像{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }这样的数组。我想按照以下顺序将这个数组写入一个文本文件。如何使用'BufferedWriter'使用Java中的特定顺序编写数组

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(); 
} 

但是,你有特定的数据集的作品。很难知道如何在不知道要解决的具体问题的情况下如何进一步提供帮助,例如需要写多少行以及要在每行上写些什么,但希望您能够明白并且能够适应您的需求具体问题。而不是硬编码'4'作为循环控制和增量,我猜你可能会使用'div'或'mod'运算符来计算'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 
+0

我你的想法。非常感谢您的回复。 – Emalka

+0

有时候写一些更多关于答案的信息会有所帮助,而不仅仅是代码:) – sniperd