3

我知道这是一个愚蠢的错误,但我不知道如何解决它。

public static void main (String args[]){
Console kitty = System.console();
String username = kitty.readLine("Username: ");
}

String username = kitty.readLine("用户名:");

产生错误。有人可以告诉我我做错了什么,谢谢。

4

2 回答 2

4

从 javadoc :

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

如果没有与 javadoc 关联的控制台,则指出的行是对空对象的方法调用,因此是异常。

你如何启动你的应用程序?

虚拟机是否具有控制台取决于底层平台以及调用虚拟机的方式。如果虚拟机从交互式命令行启动而不重定向标准输入和输出流,那么它的控制台将存在,并且通常会连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如通过后台作业调度程序,那么它通常不会有控制台。

于 2012-06-09T19:06:45.797 回答
2

如果要从标准输入中读取用户名,可以使用以下代码:

try {
    System.out.print("Username: ");
    InputStreamReader streamReader = new InputStreamReader(System.in);
    BufferedReader bufferedReader = new BufferedReader(streamReader);
    String username = bufferedReader.readLine();
} catch (IOException e) {
    e.printStackTrace();
}

System.console() 返回的控制台不一定存在,这就是你得到 NullPointerException 的原因。

于 2012-06-09T19:18:26.770 回答