[英]Difference in Processing of System.err.print ans System.out.print
在執行時如何處理System.err.print和System.out.print有區別嗎? 我有一個整數數組,其范圍是2到20。該數組被打印為矩陣,所有大於等於10的整數都應使用System.err.print打印為紅色。 如果這樣做,輸出如下所示:
7 11 15 12 12 12 11 16 17 17 13 4 7
9 8 4
9
9 4 10
12 4 16 12 10
所有int> = 10均為紅色。
而不是像這樣
11 7 4 15 7
9 12 8 12 4
9 12 11 16 17
17 9 4 13 10
12 4 16 12 10
沒有我想要的紅色標記。
兩者都使用相同的數組,首先使用以下代碼打印:
public static void printArray2(int ar[][]) {
if (ar == null)
System.exit(0);
for (int i = 0; i < ar.length; i++) {
for (int j = 0; j < ar[i].length; j++) {
if (ar[i][j] < 10)
System.out.print(" " + ar[i][j] + "\t");
else
System.err.print(" " + ar[i][j] + "\t");
}
System.out.println();
}
}
而第二個輸出使用此代碼打印
public static void printArray(int ar[][]) {
if (ar == null)
System.exit(0);
for (int i = 0; i < ar.length; i++) {
for (int j = 0; j < ar[i].length; j++) {
if (ar[i][j] < 10)
System.out.print(" " + ar[i][j] + "\t");
else
System.out.print(" " + ar[i][j] + "\t");
}
System.out.println();
}
}
有沒有辦法在仍然使用System.err.print的情況下防止格式錯誤的輸出?
基本上,這兩個流代表不同的控制台。
當您打印到它們時,實際發生的情況可能很大程度上取決於JVM實現或底層操作系統。
從這個意義上說:您真正的問題是您認為可以使用這樣的控制台。
錯誤控制台的目的是:在其中打印重要的錯誤消息。 作為一種替代方法-檢查是否可以為應用程序使用某些“ ncurses”(如庫)(請參閱此處作為起點)。 換句話說:不要像這樣濫用stderr而是要研究獲得對stdout的更多控制的方法。 這樣您就可以在一個控制台 (而不是兩個)上以彩色打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.