这是我的密码:
System.out.println("Enter Username: ");
String unm=System.console().readLine();
System.out.println("Enter Password: ");
char[] pwd=System.console().readPassword();
System.out.println("Welcome: " + "" + " Your password is " + new String(pwd));
为什么我会犯这个错误?
输入用户名:
cons.main处的线程“main”java.lang.nullpointerexception中出现异常(cons。java:13)
5条答案
按热度按时间iibxawm41#
您应该首先在system.console上执行空检查。在没有任何控制台关联的平台上,此应用程序将因空指针异常而终止。
对是否有任何控制台可用执行空检查。如果没有,请用扫描仪阅读:
注:
控制台的一个优点是,特别是在读取密码时,它不会显示在屏幕上。使用扫描仪,您的密码将显示在屏幕上。
上面的代码片段用于演示。
pokxtpni2#
从javadoc:
返回与当前java虚拟机关联的唯一控制台对象(如果有)。如果没有与javadoc相关联的控制台,那么指向的行是对空对象的方法调用,因此是异常。
如何启动应用程序?
虚拟机是否有控制台取决于底层平台以及调用虚拟机的方式。如果虚拟机是从交互命令行启动的,而没有重定向标准的输入和输出流,那么它的控制台将存在,并且通常会连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如由后台作业调度器启动,那么它通常没有控制台。
最好的方法是,
如果要从标准输入中读取用户名,可以使用以下代码:
euoag5mw3#
如果您只需要输入用户名,system.console()提供的答案在netbeans中给出一个nullpointerexception就足够了。
但是,您还需要安全地输入密码。为此,您提供的代码非常好。您只需编译项目并在控制台或终端(而不是ide)中运行它。
e、 例如,如果您使用的是windows和netbeans,请单击菜单项run来构建您的项目→ 生成项目。这将创建一个
.jar
与项目同名的文件。现在打开一个
cmd
窗口中,导航到.jar
找到文件,然后通过键入java -jar YourProjectName.jar
命令(替换YourProjectName
项目名称)。jckbn6z74#
那是因为
System.console()
正在返回null。官方文件指出(我要强调粗体):公共静态控制台()
返回与当前java虚拟机关联的唯一控制台对象(如果有)。
返回:系统控制台(如果有),否则为空。
你可以在这里看到。
k3bvogb15#
你应该使用
BufferedReader
或者Scanner
类从控制台读取输入。缓冲读取器:
扫描仪: