4

我正在阅读 OCA Java SE 7 学习指南,并且正在阅读软件包。但是,我在 Eclipse 中输入了在书中找到的相同代码,但我收到了这个错误。错误是

com.ocaj.exam.tutorial.MainClass.main(MainClass.java:12) 处的线程“main”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);
}
}

非常感谢

4

3 回答 3

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();
于 2013-08-01T11:24:33.257 回答
0

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

于 2013-08-01T11:26:44.920 回答
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();
于 2013-08-01T11:30:23.920 回答