我正在阅读OCA Java SE 7学习指南并正在阅读包。但是,我在Eclipse中输入相同的代码,在本书中找到但是我收到了这个错误。 错误是
线程“main”java.lang.NullPointerException中的异常 在com.ocaj.exam.tutorial.MainClass.main(MainClass.java:12)
这是我的代码......
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);
}
}
非常感谢
答案 0 :(得分:6)
System.console
可以返回null
,具体取决于JVM运行的环境。
来自javadoc
如果没有可用的控制台设备,那么该方法的调用将返回null。
Eclipse是System.console
返回null
的环境之一,因为它通常使用没有关联控制台窗口的javaw
。
使用java.util.Scanner代替没有此限制。
Scanner scanner = new Scanner(System.in);
String planet = scanner.nextLine();
答案 1 :(得分:0)
System.console()
将返回null。尝试在控制台中运行程序(“命令提示符”)。
答案 2 :(得分:0)
这是因为如果使用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();