2013-01-07 45 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);