我知道这是一个愚蠢的错误,但我不知道如何解决它。
public static void main (String args[]){
Console kitty = System.console();
String username = kitty.readLine("Username: ");
}
String username = kitty.readLine("用户名:");
产生错误。有人可以告诉我我做错了什么,谢谢。
我知道这是一个愚蠢的错误,但我不知道如何解决它。
public static void main (String args[]){
Console kitty = System.console();
String username = kitty.readLine("Username: ");
}
String username = kitty.readLine("用户名:");
产生错误。有人可以告诉我我做错了什么,谢谢。
从 javadoc :
返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。
如果没有与 javadoc 关联的控制台,则指出的行是对空对象的方法调用,因此是异常。
你如何启动你的应用程序?
虚拟机是否具有控制台取决于底层平台以及调用虚拟机的方式。如果虚拟机从交互式命令行启动而不重定向标准输入和输出流,那么它的控制台将存在,并且通常会连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如通过后台作业调度程序,那么它通常不会有控制台。
如果要从标准输入中读取用户名,可以使用以下代码:
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 的原因。