我制定了一个确定谋杀时间的程序。我现在的代码现在准确地打印到终端应该是什么。我希望它打印到一个文件。但是,我不应该使用System.setOut()
来完成此任务。我应该打印到终端的文件而不是。
我知道如何在文件中写一个简单的String
,这里的问题是我已经有了将结果打印到终端的方法,而且我不确定如何将这些方法“转换”为打印而是改为文件。
这是我的两种印刷方法和主要方法:
打印2d阵列方法:
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()
,我很感激答案,让我了解如何实现这一点,并使其在我的代码中工作,即使我正在寻找替代方法。
答案 0 :(得分:1)
这很简单:现在,您正在使用(静态)对象System.out
进行所有打印。此对象具有print,println等方法。
您可以创建一个说PrintWriter的实例,并在该对象上调用方法,而不是使用System.out,例如
PrintWriter writer = new PrintWriter("whatever.txt");
writer.println("whatever");
writer.close();
这就是全部。或者甚至更简单,您可以实例化PrintStream对象。然后你可以做以下事情:
PrintStream out = System.out // or new PrintStream("filename");
doStuff(out);
... with:
public void doStuff(PrintStream out) {
out.println...
现在你有一个中心位置,你决定是否要打印到System.out或其他地方!