【问题标题】:User Input Java用户输入 Java
【发布时间】:2015-05-23 21:04:43
【问题描述】:

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

谁能提出一个可能的解决方案?

【问题讨论】:

  • 当您发布代码并且出现带有行号的异常时,重新格式化代码是个坏主意。异常在第 14 行触发。您发布的代码少于 14 行。哪一行是实际的 14?

标签: java input io nullpointerexception


【解决方案1】:

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

系统控制台,如果有的话,否则null

所以你的代码相当于:

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

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

【讨论】:

    【解决方案2】:

    System.console() 如果存在则返回一个控制台。 Java 应用程序可以在没有控制台的情况下启动。

    不管它为什么接缝,这是这个的副本(除其他外):

    Why does System.console() return null for a command line app?

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      使用Scanner 代替Console
      正如这个答案中提到的this answer

      【讨论】:

        【解决方案4】:

        第 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.`
        

        【讨论】:

          【解决方案5】:

          当您在 IDE 中运行代码时,通常不会有控制台对象。 System.console() 将因此返回null 并且console.readLine("What is your name? "); 将生成NullPointerException。您仍然可以通过System.in 阅读,因此要阅读一行,您可以改用:

          Scanner sc = new Scanner(System.in);
          String read = sc.nextLine();
          

          【讨论】:

          • 在这种情况下,您能否建议在 IDE 中获取输入的可能解决方案?
          • 显然System.in 仍然可以在 NetBeans 中运行。因此,例如 new Scanner(System.in) 应该可以工作。
          猜你喜欢
          • 1970-01-01
          • 2013-05-25
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          • 2021-12-07
          • 2016-03-15
          • 2021-03-05
          相关资源
          最近更新 更多