-3

私は、1人のプレーヤーが単語を選択し、他のプレーヤーが任意の回数の試行で単語を推測する必要がある単純なゲームを作成しています。

public class JavaHang

{{

//Data Members
private String secretWord;
private StringBuffer blankGuess;

//Constructor
public JavaHang(String s)
{
    secretWord = s;
    StringBuffer blankGuess = new StringBuffer( secretWord );
}
public void setBlankGuess()
{
    for(int i = 0;i<secretWord.length();i++)
    {
        blankGuess.setCharAt(i, '_');
    }
}

私はこれ以上のものを持っていますが、私のエラーの場所があると思います。NullPointerExceptionが発生しています。「StringbufferblankGuess」の値はどのようにnull値になりますか?

4

2 に答える 2

4

メソッド内で2回目の宣言を行ったため、NPEを取得しているblankGuessため、使用していると思われるもの(クラスのフィールドとして宣言されたもの)をシャドウ/非表示にしています。

変化する:

StringBuffer blankGuess = new StringBuffer( secretWord );

に:

blankGuess = new StringBuffer( secretWord );
于 2013-01-07T23:50:40.647 に答える
3
public JavaHang(String s)
{
    secretWord = s;
    StringBuffer blankGuess = new StringBuffer( secretWord );
}

blankGuessはコンストラクターで宣言および初期化されたローカル変数です。初期化されていないインスタンス変数を使用していて、文字列バッファーメソッドを呼び出すとにつながると確信していますNullpointerException。以下のようにインスタンス変数を初期化する必要がありますblankGuess

 public JavaHang(String s)
    {
        secretWord = s;
         blankGuess = new StringBuffer( secretWord );
    }
于 2013-01-07T23:50:20.710 に答える