我正在使用Java(使用NetBeans)构建一个应用程序,该应用程序通过控制台接受用户输入,并使用其名称(在用户输入中给出)打印出一个语句。以下是代码:
package amazingpets;
import java.io.Console;
public class AmazingPets {
public static void main(String[] args) {
Console console = System.console();
String firstName = console.readLine("What is your name? ");
console.printf("My name is %s.\n",firstName);
}
}
但是我在控制台中一直收到以下错误:
线程中的异常" main"显示java.lang.NullPointerException
在amazingpets.AmazingPets.main(AmazingPets.java:14)
Java结果:1
有人可以建议一个可能的解决方案吗?
答案 0 :(得分:2)
从System#console
的文档中,它返回:
系统控制台(如果有),否则为
null
。
所以你的代码相当于:
String firstName = null.readLine("What is your name? ");
我建议你改用Scanner scanner = new Scanner(System.in);
。
答案 1 :(得分:0)
在IDE中运行代码时,通常没有控制台对象。因此,System.console()
将返回null
,console.readLine("What is your name? ");
将生成NullPointerException
。您仍然可以通过System.in
阅读,因此要阅读一行,您可以改为使用:
Scanner sc = new Scanner(System.in);
String read = sc.nextLine();
答案 2 :(得分:0)
System.console()返回控制台(如果存在)。可以在没有控制台的情况下启动Java应用程序。
为什么它接缝这个是这个(和其他)的副本:
Why does System.console() return null for a command line app?
希望有所帮助
答案 3 :(得分:0)
使用Scanner
代替Console
正如本回答this answer
答案 4 :(得分:0)
第14行不是你在哪里创建firstName变量?在这种情况下,控制台可能为空。 Javadoc for Console说
` a unique instance of this class which can be obtained by invoking theSystem.console() method. If no console device is available then an invocation of that method will return null.`