2013-08-01 115 views
3

我正在通过OCA Java SE 7学习指南并正在通过包。不过,我在Eclipse中输入了相同的代码,但是我遇到了这个错误。 错误是线程“main”中的异常java.lang.NullPointerException - 包

异常线程 “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); 
} 
} 

非常感谢

回答

5

System.console可以返回null德等待JVM运行的环境。

javadoc

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

Eclipse是这些环境下,当System.console返回null因为它通常使用javaw其不必须的相关联的控制台窗口中的一个。

改为使用java.util.Scanner,它没有这样的限制。

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

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

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(); 
相关问题