2013-08-01 87 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(); 
相關問題