用户输入Java

时间:2015-05-23 21:04:43

标签: 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 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

有人可以建议一个可能的解决方案吗?

5 个答案:

答案 0 :(得分:2)

System#console的文档中,它返回:

  

系统控制台(如果有),否则为null

所以你的代码相当于:

String firstName = null.readLine("What is your name? ");

我建议你改用Scanner scanner = new Scanner(System.in);

答案 1 :(得分:0)

在IDE中运行代码时,通常没有控制台对象。因此,System.console()将返回nullconsole.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.`