java - 在线程"主要" java.lang.NullPointerException 包中,

  显示原文与译文双语对照的内容

我正在浏览OCA的学习指南,我正在浏览软件包。 但是,我在 Eclipse 中输入相同的代码,在书中找到了,但我得到了这个错误。 错误是

com.ocaj. exam.tutorial.MainClass.main(MainClass.java:12 ) 中线程"主要" java.lang.NullPointerException的异常

这是我的密码。


package com.ocaj.exam.tutorial;//Package statement



//Imports class ArrayList from the java.util package


import java.util.ArrayList;


//Imports all classes from the java.io package


import java.io.*;



public class MainClass {


public static void main(String[] args) {


//Creates console from java.io package


 Console console = System.console();


 String planet = console.readLine("nEnter your favourite planet:");


//Creates list for planets


 ArrayList planetList = new ArrayList();


 planetList.add(planet);//Adds users input into the list


 planetList.add("Gliese 581 c");//Adds a string to the list


 System.out.println("nTwo cool planets:" + planetList);


}


}



非常感谢

时间: 原作者:

根据JVM运行的环境,System.console 可以返回 null

来自 javadoc

如果没有可用的控制台设备,那么该方法的调用将返回 null 。

Eclipse 是 System.console 返回 null的环境之一,因为它通常使用没有关联控制台窗口的javaw

使用 java.util.Scanner,而没有这样的限制。


Scanner scanner = new Scanner(System.in);


String planet = scanner.nextLine();



原作者:

如果正在运行的程序没有关联的控制台,System.console() 将返回 null 。 尝试在控制台( a"命令提示符") 中运行你的程序。

原作者:

这是因为如果使用 Eclipse,则不会直接从系统控制台运行它。

要使它的工作,请替换以下代码:


String planet = console.readLine("nEnter your favourite planet:");



通过:


System.out.print("nEnter your favourite planet:");


Scanner scanner = new Scanner(System.in);


String planet = scanner.nextLine();


scanner.close();



原作者:
...