我正在制作一个简单的游戏,其中一个玩家选择该单词而另一个玩家必须在任何尝试次数中猜出该单词。
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 :(得分:4)
你得到一个NPE因为你已经在方法中第二次声明blankGuess
因此你正在隐藏/隐藏你认为正在使用的那个(在课堂上被宣布为一个字段的那个) )。
变化:
StringBuffer blankGuess = new StringBuffer( secretWord );
为:
blankGuess = new StringBuffer( secretWord );
答案 1 :(得分:3)
public JavaHang(String s)
{
secretWord = s;
StringBuffer blankGuess = new StringBuffer( secretWord );
}
blankGuess
是在构造函数中声明并初始化的本地变量,我很确定您使用的是未初始化的实例变量,并且调用字符串缓冲区方法会导致{{ 1}}。您必须像下面一样初始化实例变量NullpointerException
。
blankGuess