用户输入Java
我正在用Java(使用NetBeans)构建一个应用程序,它通过控制台接受用户输入,并使用其名称(在用户输入中给出)打印出一条语句。代码如下:用户输入Java,java,input,io,nullpointerexception,Java,Input,Io,Nullpointerexception,我正在用Java(使用NetBeans)构建一个应用程序,它通过控制台接受用户输入,并使用其名称(在用户输入中给出)打印出一条语句。代码如下: package amazingpets; import java.io.Console; public class AmazingPets { public static void main(String[] args) { Console console = System.console(); String
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
有人能提出一个可能的解决方案吗?当您在IDE中运行代码时,通常不会有控制台对象
System.console()
将因此返回null
和console.readLine(“您叫什么名字?”)代码>将生成一个NullPointerException
。您仍然可以通过系统进行读取。在
中,要读取行,您可以使用:
Scanner sc = new Scanner(System.in);
String read = sc.nextLine();
从的文档中,它返回:
系统控制台(如果有),否则null
因此,您的代码相当于:
String firstName = null.readLine("What is your name? ");
我建议您使用Scanner=newscanner(System.in)代码>。System.console()返回一个控制台(如果存在)。Java应用程序可以在没有控制台的情况下启动
无论如何,这是一个复制品(其中包括):
希望对您有所帮助使用扫描仪
而不是控制台
如本答案所述,第14行不是创建firstName变量的地方吗?在这种情况下,控制台可能为空。控制台的Javadoc说
` 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.`
当您发布代码和包含行号的异常时,重新格式化代码是个坏主意。异常在第14行触发。您发布的代码少于14行。哪一行是实际的14行?在这种情况下,您可以建议在IDE中获取输入的可能解决方案吗?显然系统。In
应该仍然在NetBeans中工作。因此,例如新扫描仪(System.in)
应该可以工作。