2017-08-27 15 views
0

私は{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }のような配列を持っています。この配列を次の順序でテキストファイルに書きたいと思います。Javaで特定の順序を使用して 'BufferedWriter'を使用して配列を書き込む方法

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

私は次のコードで試しました。しかし、私はこのような出力を得ることができませんでした。大きなデータセットがあり、上記の順序に従ってテキストファイルに書き留めたいと思います。あなたが持っている特定のデータセットのために働くしかし

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

、:

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

は、この特定の問題について次のような、ループ内でループを試してみてください。あなたが解決しようとしている特定の問題、例えば、書き込む行数と各行に入れる行数を知らなくても、さらに助けていく方法を知ることは難しいですが、あなたが考えを得て、あなたのためにそれを適応させることができれば特定の問題。ループコントロールとして「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

関連する問題