我制定了確定謀殺時間的程序。我現在所擁有的代碼完全打印出它應該給終端的內容。我希望它打印到一個文件。但是,我不應該爲此作業使用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()
,我很欣賞那些讓我明白如何實現這一點並使其在我的代碼中工作的答案,即使我正在尋找一種替代方法。
如果'your_process'輸出到控制檯,那麼你可以很容易地用'your_process> outfile'將它打印到一個文件中。 – Seelenvirtuose
我不明白。由於要求「_to打印到文件而不是打印到終端_」,因此'System.setOut()'有什麼問題? '系統。out'只是一個流,最初連接到終端,如果你將它重定向到一個文件,這將是正確的,它不會通過終端。 – AxelH
您可以重定向輸出(上面建議),您可以使用System.out + System.setOut,或者您可以更改所有System.out語句以使用不同的Writer/PrintStream。 – matt