2

快速提问,我不知道我在这里缺少什么。如果我有一个连续 9 个数字和总共 9 行的控制台输出,我将如何将确切的输出写入外部文本文件,所以它在文本文件中看起来是一样的。

假设控制台如下所示:

2 4 5 1 9 3 6 8 7 
9 7 6 2 5 8 4 1 3 
1 8 3 7 4 6 9 2 5 
8 5 2 3 1 9 7 4 6 
3 1 9 4 6 7 8 5 2 
7 6 4 5 8 2 3 9 1 
4 3 8 6 2 5 1 7 9 
5 9 7 8 3 1 2 6 4 
6 2 1 9 7 4 5 3 8

并且该控制台输出存储在名为“myArray”的数组变量中我如何将其写入文本文件,使其看起来像那样(或用逗号分隔)

到目前为止,我有这个:

File solutionFile = new File("output.txt");
FileOutputStream stream = new FileOutputStream(solutionFile);
PrintStream writeOut = new PrintStream(stream);
System.setOut(writeOut);

for (int rows = 0; rows < 9; rows++) {
  for (int columns = 0; columns < 9; columns++) {
    System.out.println(myArray[rows][columns] + " ");
  }
}

当它写入文件时,每个数字都放在自己的行上。可以提供任何帮助吗?谢谢!

4

3 回答 3

1

不要让 print 语句 a println,只是 a print

for (int rows = 0; rows < 9; rows++) {
  for (int columns = 0; columns < 9; columns++) {
    System.out.print(myArray[rows][columns] + " ");    //keep printing on the same line
  }
  System.out.println();    //go to the next line
}

您可以做的另一件事是 I/O 重定向。如果您通过终端或命令提示符运行程序,您可以键入java MyProgram > outputFile.txt. 将>控制台输出重定向到outputFile.txt而不是通常去的地方。

于 2015-12-11T00:11:05.320 回答
0

使用以下代码(而不是 println,只使用 pring 并在第二次之后调用 println())

File solutionFile = new File("output.txt");
FileOutputStream stream = new FileOutputStream(solutionFile);
PrintStream writeOut = new PrintStream(stream);
System.setOut(writeOut);

for (int rows = 0; rows < 9; rows++) {
  for (int columns = 0; columns < 9; columns++) {
    System.out.print(myArray[rows][columns] + " ");
  }
  System.out.println();
}
于 2015-12-11T00:11:38.647 回答
0

我知道这可能不是您需要的东西,但只是为了让您了解其他方法,我把它放在这里。另一个答案几乎是您所需要的。

如果您使用命令行来执行您的 java 代码,您可以通过运行您的代码将 STDOUT 重定向到一个文件,如下所示: java Main > output.txt

您还可以重定向 STDIN: java Main < input.txt > output.txt

于 2015-12-11T00:12:08.727 回答