2011-10-17 5 views
1

私は、ユーザーからオプションとしてint入力を受け取るJavaプログラムを作成しています。入力に基づいて、プログラムは、私は、コードを実行すると、それは次のようなエラーにScannerの問題

Exception in thread "main" java.lang.NullPointerException 
    at lab1.EchoClient.main(EchoClient.java:25) 

を与える異なるmethod.Butに行きます私のコードの行25で

 private Scanner reader; 
     public static void main(String[] args){ 

     EchoClient c = new EchoClient(); 
     int option; 
     System.out.println("Welcome"); 
     System.out.println("Select one of the following options:"); 
     System.out.println("1 - Iterative Server"); 
     System.out.println("2 - Concurrent Server"); 
     System.out.println("3 - Exit"); 

     option = c.reader.nextInt(); // Line No 25 
     switch(option){ 
     case 1: 
       c.iterative();//calls the iterative method 
       break; 
     case 2: 
       //some method 
       break; 
     case 3: 
       System.out.println ("bye bye"); 
       break; 
     }//end of switch() 
     }//end of main() 

     public void iterative(){ 
       String address; 
       String ip=""; 
       try{ 
        System.out.println ("Please enter your correct ip address"); 
        BufferedReader getip= new BufferedReader (newInputStreamReader(System.in)); 
        ip=getip.readLine(); 
        } 
       catch (IOException error){ 
        System.err.println("Error occured"); 
       } 

の一部はラインです:オプション= C .reader.nextInt();

+0

あなたの手助けをしたい人が多くの時間を無駄にしないように、ソースコードをより良い方法で整形してみてください。 – KNU

答えて

2

スキャンするインスタンスに従ってリーダーを構築する必要があります。あなたのケースでは

が、これは次のようになります。そして、

Scanner reader = new Scanner(System.in); 

、あなたのコードスニペット以下、あなたは建てScannerEchoClientのインスタンスが所有するreaderを設定する必要があります。

1

readerはまだ初期化されていないので、まだnullです。

0

あなたの新しいEchoReader cを作成するとき、それはreader属性を設定していないように見えます - あなたがc.readerをしようとすると、その後、あなたはnullを取得し、nextInt()を呼び出すときにNPEにつながります。 EchoReaderコンストラクタがreader属性を設定していることを再度確認します。

0

私の知る限り、読者は決して初期化されません

0

...私はあなたのプライベートスキャナリーダーを定義しましたか? スキャナリーダー=新しいスキャナ(System.in);

関連する問題