2011-06-21 40 views
0

我是一個Java初學者,想知道是否有人可以幫助我與此。試圖循環使用掃描儀類功能

我想要做的是試圖循環用戶輸入。我想知道當我嘗試運行loopPlay()時我是如何得到一個空指針異常的。

編輯:我現在明白我沒有初始化userInput。有人能告訴我該怎麼做嗎?

import java.util.Scanner; 

public class InputReader 
{ 

private Scanner scanner; 

    /** 
    * Create a new InputReader to read user input. 
    */ 
    public InputReader() 
    { 
     scanner = new Scanner(System.in); 
    } 

    /** 
    * @return the user's input as a String 
    */ 
    public String getInput() 
    { 
     return scanner.nextLine(); 
    } 
} 

class StringPlay { 

    private InputReader userInput; 



    public void loopPlay(int timesToLoop) { 
     if (timesToLoop <= 0) { 
      System.out.println("Error: input too low."); 
      return; 
     } else { 
      int counter = timesToLoop; 

      while (timesToLoop > 0) {     
       System.out.println("Type a sentence: "); 
       String input = userInput.getInput(); 
       System.out.println("You typed: "+ input); 
       counter--; 
      } 

     } 
    } 
} 
+0

userInput永遠不會初始化?你只是在loopPlay()中調用它,但是你從來沒有在那個引用上說new()。 – Dan

回答

0

當然userInput不initalized,這是null

+0

謝謝Petar。你介意幫我解決這個問題嗎?我將如何初始化userInput變量? – iggy2012

1

和其他人一樣,你需要初始化userInput。下面這行將調用InputReader構造函數。

private InputReader userInput = new InputReader(); 
0

userInput尚未初始化,變化:

private InputReader userInput;到:

private InputReader userInput = new InputReader();