线程“main”java.lang.NullPointerException中的异常

我正在阅读OCA Java SE 7学习指南,并正在审阅包。 不过,我在Eclipse中输入了相同的代码,但是我遇到了这个错误。 错误是

线程“main”中的异常java.lang.NullPointerException at 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);
}
}

非常感谢


System.console可以返回null具体取决于JVM运行的环境。

从javadoc

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

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

相反,使用java.util.Scanner没有这个限制。

Scanner scanner = new Scanner(System.in);
String planet = scanner.nextLine();

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


那是因为如果你使用的是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();
链接地址: http://www.djcxy.com/p/84179.html

上一篇: Exception in thread "main" java.lang.NullPointerException

下一篇: Run Java path finder