Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java System.err.print与System.out.print的处理差异_Java_System.out_System.err - Fatal编程技术网

Java System.err.print与System.out.print的处理差异

Java System.err.print与System.out.print的处理差异,java,system.out,system.err,Java,System.out,System.err,执行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为红色。 而不是

执行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();
    }
}
publicstaticvoidprintary2(int-ar[]{
if(ar==null)
系统出口(0);
for(int i=0;i
而第二个输出将使用此代码打印

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();
    }
}
publicstaticvoidprintary(int-ar[]{
if(ar==null)
系统出口(0);
for(int i=0;i

在仍然使用System.err.print时,有没有办法防止未格式化的输出?

基本上,这两个流代表不同的控制台

打印到它们时实际发生的情况可能很大程度上取决于JVM实现或底层操作系统

从这个意义上说:你真正的问题是你的假设,你可以使用这样的控制台

错误控制台的用途是:在那里打印重要的错误消息。作为一种替代方法,请检查您是否可以为您的应用程序使用一些类似于库的“ncurses”(参见作为起点)。换句话说:不要像这样错误地使用stderr,而是要寻找更多的方法来控制stdout。因此,您可以在一个控制台上打印颜色,而不是两个控制台