Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户输入Java_Java_Input_Io_Nullpointerexception - Fatal编程技术网

用户输入Java

用户输入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

我正在用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


有人能提出一个可能的解决方案吗?

当您在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)
应该可以工作。