2011-06-21 11 views
0

私はJavaの初心者で、誰かがこれで私を助けてくれるのだろうかと思っていました。スキャナクラスで関数をループしようとしています

私がしようとしているのは、ユーザー入力をループさせることです。私はloopPlay()を実行しようとすると、nullポインタ例外をどうやって得ているのだろうと思っていた。

私は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

ユーザ入力が初期化されることはありませんか?あなたはloopPlay()の中で呼び出すだけですが、あなたはその参照に対してnew()を言ったことはありません。 – Dan

答えて

0

きっとuserInputはinitalized、それはnullですされていません。

+0

Thanks Petar。あなたは私を助けてくれませんか?どのように私はuserInput変数を初期化するでしょうか? – iggy2012

1

他のユーザーのように、あなたはuserInputを初期化する必要があります。以下の行は、InputReaderコンストラクタを呼び出します。ユーザ入力が初期化されていない

private InputReader userInput = new InputReader(); 
0

、変更:

private InputReader userInput;へ:

private InputReader userInput = new InputReader();

関連する問題