2015-05-27 86 views
-4

我想將二維數組打印到我的桌面上的txt文件。重要的是,輸出的格式是用代碼表示的,因爲它代表了行和座位。我正在嘗試將二維數組打印到文件中

代碼:

package vaja15; 
import java.util.*; 
import java.io.PrintWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 

public class Vaja15 
{ 
    public static void main(String[] args) throws FileNotFoundException 
    { 
     System.out.println("Vnesi velikost dvorane (vrste/sedezi): "); 
     Scanner sc = new Scanner(System.in); 
     Random r = new Random(); 
     int vrst = sc.nextInt(); 
     int sedezev = sc.nextInt(); 
     int [][] dvorana = new int [vrst][sedezev]; 
     File file = new File ("C:/users/mr/desktop/dvorana.txt"); 


     for(int i = 0; i<dvorana.length; i++) 
     { 
      System.out.println(); 
      for (int j = 0; j<dvorana.length; j++) 
      { 
       dvorana [i][j] = r.nextInt(3); 
       System.out.print(dvorana[i][j]); 
       PrintWriter out = new PrintWriter(file); 
       out.println(dvorana[i][j]); 
       out.close(); 
      } 
     } 
    } 
} 
+0

看看[這個答案](http://stackoverflow.com/questions/30189253/need-help-解釋座位在電影院程序製作在爪哇/ 30189718#30189718) – moffeltje

+0

酷的故事,你的問題是什麼? – tnw

+0

只有當有新行並打開輸出流一次時纔打印新行(println)(如moffeltje所示)。這真的很簡單。 – vefthym

回答

1

你不應該開放,在循環關閉文件:在循環之前打開一個文件,寫你的陣列,關閉文件。否則它會一遍又一遍覆蓋文件。

試試這個:

PrintWriter out = new PrintWriter(file); 

for(int i = 0; i<vrst; i++) 
{ 
    System.out.println(); 
    out.println(); 
    for (int j = 0; j<sedezev; j++) 
    { 
     dvorana [i][j] = r.nextInt(3); 
     System.out.print(dvorana[i][j]);   
     out.print(dvorana[i][j]); 
    } 
} 

out.close(); 
+0

在外層循環的開始處有一個'out.println()',它的功能就像是一種魅力:) – vefthym

+0

不是,但我猜想一個新的行意味着一條新線...... – vefthym

+0

@vefthym你說得對,謝謝! – moffeltje

0

嘗試以下想法:

try { 
    File file = new File(path); 
    FileWriter writer = new FileWriter(file); 
    BufferedWriter output = new BufferedWriter(writer); 
    for (int[] array : matrix) { 
    for (int item : array) { 
     output.write(item); 
     output.write(" "); 
    } 
    output.write("\n"); 
    } 
    output.close(); 
} catch (IOException e) { 

}