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