gpt4 book ai didi

java - 打印到文件而不是终端

转载 作者:行者123 更新时间:2023-11-30 06:27:33 26 4
gpt4 key购买 nike

我编写了一个程序来确定谋杀的时间。我现在拥有的代码准确地打印了终端应该打印的内容。我想将其打印到文件中。但是,我不应该使用 System.setOut()对于这个任务。我应该打印到文件而不是到终端。

我知道如何写一个简单的String到文件中,这里的问题是我已经有了将结果打印到终端的方法,并且我不确定如何将这些方法“转换”为打印到文件中。

这是我的两种打印方法和主要方法:

打印二维数组方法:

public static void printArray2d(String[][] array2d){
for(int i = 0; i < array2d.length; i++){
for(int j = 0; j < array2d[i].length; j++){
System.out.print(array2d[i][j]);
}
System.out.print("\n");
}
}

打印完整报告方法:

public static void printReport(String[][] array2d, double arrayMin, double arrayMax){
System.out.println("Time since death probability distribution");
double hours = (arrayMax-arrayMin)/(array2d.length-1);
System.out.printf("Each line corresponds to approximately %.2f hours\n", hours);
System.out.printf("%.2f hours\n", arrayMin);
printArray2d(array2d);
System.out.printf("%.2f hours\n", arrayMax);
}

主要方法:

public static void main(String args[]) {

double[] array = cooldownSamples(27, 1000);
double[] counts = countsFromArray(array, 20);
String[][] array2d = array2dFromCounts(counts);
printReport(array2d, minFromArray(array), maxFromArray(array));
}

如果需要,我可以发布整个代码。

我知道之前也有人问过类似的问题,但他们都没有给我所需的帮助。我也没有足够的声誉来对这些线程上给出的任何答案提出后续问题,所以我被迫提出一个新问题。

预先感谢您提供的任何帮助!

其他信息:

尽管我说过我不应该使用System.setOut() ,我尝试过使用 this thread 中给出的方法和答案,没有任何运气。如果最好、最有效的方法是通过 System.setOut() ,我确实很感谢那些让我了解如何实现这一点并使其在我的代码中工作的答案,即使我正在寻找替代方法。

最佳答案

这非常简单:现在,您正在使用一个(静态)对象 System.out 来执行所有打印。该对象具有 print、println 等方法。

您不使用 System.out,而是创建一个实例 PrintWriter并调用该对象的方法,例如

PrintWriter writer = new PrintWriter("whatever.txt");
writer.println("whatever");
writer.close();

这就是全部内容了。或者更简单,您可以实例化 PrintStream目的。然后您可以执行以下操作:

 PrintStream out = System.out // or new PrintStream("filename");
doStuff(out);

...与:

 public void doStuff(PrintStream out) {
out.println...

现在您有一个中心位置,您可以在其中决定是否要打印到 System.out - 或其他地方!

关于java - 打印到文件而不是终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com