2017-08-27 41 views
0

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

回答

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
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

相關問題