2017-12-01 9 views
0

実行中にSystem.err.printとSystem.out.printがどのように処理されるのか? 2次元と20次元の2次元配列を持っています。配列はマトリックスとして出力され、System.err.printを使用してすべてのIntegers> = 10が赤で表示されます。 やっている場合は、その出力は次のようになります。処理の違いSystem.err.print ans System.out.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 

をすべて整数> = 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 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(); 
    } 
} 

で印刷されますながら

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(); 
    } 
} 

依然としてながらunformmated出力を防止する方法があります:

両方が同一の配列、最初にこのコードが印刷されますが、使用しますSystem.err.printを使用していますか?

答えて

2

基本的に、これらの2つのストリームは、異なるコンソールを表します。

実際に印刷するときには、JVMの実装や基盤となるオペレーティングシステムに大きく依存する可能性があります。

あなたの本当の問題は、あなたがこのようなコンソールを使うことができるというあなたの前提です。

エラーコンソールの目的は、重要なエラーメッセージをそこに表示することです。代わりの方法として、あなたのアプリケーション用のライブラリのようないくつかの "ncurses"を使うことができるかどうかチェックしてください(開始点としてhereを参照)。言い換えれば、stderrを誤って使用する代わりに、stdoutをより詳細に制御する方法を見てください。そのため、1台のコンソールでの色で印刷することができます。

関連する問題