【问题标题】:I am trying to print a 2D array to a file我正在尝试将二维数组打印到文件中
【发布时间】:2015-08-09 17:42:36
【问题描述】:

我想将二维数组打印到桌面上的 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();
            }   
        }
     }
 }

【问题讨论】:

  • 看看this answer
  • 很酷的故事,你有什么问题?
  • 仅在有新行时打印新行 (println) 并仅打开一次输出流(如 moffeltje 建议的那样)。真的就这么简单。

标签: java arrays file printing


【解决方案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();

【讨论】:

  • 在外循环的开头再添加一个out.println(),它就像一个魅力:)
  • @vefthym 感谢你们俩。这正是我的想法。
【解决方案2】:

试试下面的思路:

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

}

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2014-05-29
    • 2021-08-14
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2015-08-22
    相关资源
    最近更新 更多