2016-09-10 4 views
3

私はちょうどいくつかのJavaの学習を始めました。この簡単なプログラムを作成しましたが、私のコードで何が間違っているのか分かりません。単純なコンソールテストアプリケーションのNullPointerException

これは私が実行したときに、私が何を参照してくださいエラーです:

スレッドでの例外treehousejava.Main.mainで "メイン" のjava.lang.NullPointerException (Main.java:9)

これは私のコードです:

package treehousejava; 

import java.io.Console; 

public class Main { 
@SuppressWarnings("unused") 
    public static void main (String[] args){ 
     Console console = System.console(); 
     String q = console.readLine("Hi there! what's your name? "); 
     console.printf("hi there %s ! my name is console! "); 
    } 
} 
+2

System.console' 'のjavadocは、それが' null'なのでを返します。その場合には1、存在しないかもしれないと言います。コンソールを使用しようとする正当な理由はありますか?もしそうでなければ、私は 'System.out.println'を出力に使用し、' Scanner'を 'System.in'に入力するだけです。 – ajb

+2

@Unknownここでは関係ありません。どの変数がnullであるかは明らかですが、質問は*なぜ*この場合は*、そしてそれはあなたの提案された複製によって答えられません(コメントと回答で示されているように答えは簡単ですが) –

+0

実際、私が使っているIDEであるEclipseのプログラムは、NPEになります。なぜなら、 'Console'がないからです。ただし、コマンドラインでの実行は機能します。解決策はそれを使用しないことです。アダムの答えを見てください。 – Seelenvirtuose

答えて

3

私はあなたが学習のこのタイプのためSystem.inSystem.outを使用したい疑いますプログラム。使用しているプラ​​ットフォームでSystem.console()が使用できない可能性があり、呼び出しはnullを返します。したがって、NullPointExceptionが返されます。標準入力と出力は常に利用可能です。

Scanner scanner = new Scanner(System.in); 
System.out.println("Hi there! what's your name? "); 
String q = scanner.nextLine(); 
System.out.printf("hi there %s ! my name is console! ", q);