2013-01-07 41 views
-2

我正在做一個簡單的遊戲,其中1個玩家選擇該單詞,另一個玩家必須猜測該單詞的任何嘗試次數。StringBuffer Hang子手遊戲Null異常錯誤

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。 「Stringbuffer blankGuess」的值如何具有空值?

+0

它在哪裏說的錯誤是怎麼回事?你能複製堆棧跟蹤嗎? – iamnotmaynard

+0

請發佈stacktrace並指出NPE發生的行。 – jlordo

+0

錯誤發生在「blankGuess.setCharAt(i,'_');」 – Alex

回答

3
public JavaHang(String s) 
{ 
    secretWord = s; 
    StringBuffer blankGuess = new StringBuffer(secretWord); 
} 

blankGuess是本地varaible在構造函數初始化declaredand,我敢肯定,你正在使用未初始化的實例變量和調用字符串緩衝區方法導致NullpointerException。你必須像下面那樣初始化實例變量blankGuess

public JavaHang(String s) 
    { 
     secretWord = s; 
     blankGuess = new StringBuffer(secretWord); 
    } 
+0

好的電話。甚至沒有看到代碼。 – iamnotmaynard

+0

@iamnotmaynard謝謝:) – PermGenError

+0

另一個新手的錯誤(;感謝您的幫助! – Alex

4

你得到的NPE becaue你聲明blankGuess方法內第二次,因此你的陰影/隱藏你認爲你正在使用(在一個聲明爲類中的字段的一個)。

變化:

StringBuffer blankGuess = new StringBuffer(secretWord); 

到:

blankGuess = new StringBuffer(secretWord);