2011-10-17 61 views
1

我正在寫一個java程序,它將int輸入作爲用戶的一個選項。根據輸入的程序會去不同的method.But當我運行代碼,它提供了以下錯誤代碼的我Scanner的問題

 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"); 
       } 

在第25行

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

部分行:選項= C .reader.nextInt();

+0

請嘗試以更好的方式格式化您的源代碼,以便那些想要幫助您的人不會浪費大部分時間。 – KNU

回答

2

您需要根據要掃描的實例來構建閱讀器。

你的情況,這應該是這樣的:

Scanner reader = new Scanner(System.in); 

接着,下面的代碼段,你應該設置你的EchoClient實例擁有的內置Scannerreader

1

reader從不初始化,所以它仍然爲空。

0

它看起來當你創建新的EchoReader c一樣,它不設置reader屬性 - 那麼當你嘗試c.reader,你null,呼籲nextInt()時導致NPE。仔細檢查您的EchoReader構造函數是否設置reader屬性。

0

閱讀器從未被初始化,據我所知

0

......您是否定義了您的私人掃描儀閱讀器? 掃描儀閱讀器=新的掃描儀(System.in);