1

我是初学者。只是想知道为什么这段代码在 Windows 命令提示符下工作得很好,但我得到了:

Exception in thread "main" java.lang.NullPointerException
  at Test1.main(Test1.java:13)

日食中的错误。这在我身上发生了很多,它真的阻止了我使用 eclipse。

这是代码:

导入 java.io.Console;

public class Test1 {

    public static void main(String[] args) {        
        Console myConsole = System.console();

        for (int a = 0; a < 10; a++){           
            int a2 = a * a;         
            myConsole.printf("\n%d squared is: %d.",a,a2); //Problem with this line
        }       
        System.exit(0);
    }
}
4

3 回答 3

4

System.console()状态的 javadoc

返回系统控制台(如果有),否则为 null。

Eclipse 不得关联系统控制台。

改为使用System.in,可能带有java.util.Scannerfor 输入。并System.out用于输出。

于 2013-10-18T14:27:41.427 回答
3

简单地说,System.console()是在 Eclipse 中返回null,但不是在控制台中运行时返回。这是记录在案的行为:

返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。

返回:
系统控制台(如果有),否则为 null。

为什么不直接使用System.out呢?毕竟,您不需要.Console

于 2013-10-18T14:29:11.193 回答
2

System#console可能会null在某些环境中返回。由于您只是输出到控制台,因此您不需要使用Console. Formatter可以改用:

System.out.printf("\n%d squared is: %d.", a, a2); 
于 2013-10-18T14:27:20.167 回答