2015-05-27 4 views
-4

Я хочу напечатать 2D-массив в txt-файле на своем рабочем столе. Важно, чтобы выход был отформатирован в порядке, то есть в коде, потому что он представляет строки и места.Я пытаюсь распечатать 2D-массив в файл

Код:

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- to-explain-seat-at-a-movie-program-made-in-java/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) { 

} 
Смежные вопросы