2013-08-01 3 views
3

OCA Java SE 7 스터디 가이드를 통해 패키지를 검토 중입니다. 그러나 이클립스에서 같은 코드를 입력하고 있는데 책에서 발견되지만이 오류가 발생합니다. 오류가 com.ocaj.exam.tutorial.MainClass.main (MainClass.java:12)에서 "주"스레드"main"스레드의 예외 java.lang.NullPointerException - Package

예외 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); 
} 
} 

많은 감사

답변

5

System.console는 반환 할 수 null 드 JVM이 작동중인 환경에서 보류 중입니다. javadoc

에서

에는 콘솔 장치는 그 메소드의 호출은 null을 반환합니다 사용할 수없는 경우.

이클립스가 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(); 

는 다음과 같은 코드를 대체 작동하게하려면

관련 문제