我一直在星星包围的线上得到一个空指针异常。我怎样才能解决这个问题?我不明白为什么会发生这种情况,因为我把currentGuessArray填充为假。 (我没有包含我的所有代码,只包含与currentGuessArray有关的部分。)
public static boolean [] currentGuessArray;
public void initGuess() {
// creates a new Array for the currentGuessArray variable
boolean [] currentGuessArray = new boolean[20];
// initialize all slots to false
Arrays.fill(currentGuessArray, false);
}
public String getCurrentGuessArray() {
// the returned String has "_ " for unrevealed letters
// “walk over” the currentWord and currentGuessArray Arrays and create the String
if ( !currentWord.equals("Shrek") && !currentWord.equals("Dobby") ) {
int j = 1;
while ( (!currentWord.substring(j, j).equals(" ")) && (j < currentWord.length()) ) {
j++;
spaceSpot = j;
}
}
int k = 0;
String displayString = "";
while ( k < currentWord.length() ) {
if ( k == spaceSpot ) {
displayString = displayString + " ";
}
**else if ( currentGuessArray[k] == true ) {**
displayString = displayString + currentWord.substring(k, k);
}
else {
displayString = displayString + "_ ";
}
k++;
}
return displayString;
}
答案 0 :(得分:4)
假设正在调用initGuess
,您需要shadowing currentGuessArray
。取代
boolean [] currentGuessArray = new boolean[20];
带
currentGuessArray = new boolean[20];
答案 1 :(得分:0)
您已经定义了一个与类变量同名的局部变量。
因此,声明了局部变量,填充了false,然后在方法结束时收集了它的垃圾。
当您引用currentGuessArray(作为类变量,我想在客户端代码中某处)时,它从未被设置为任何引用,因此您获得空指针异常。试试以下内容:
public static boolean [] currentGuessArray;
public void initGuess() {
// creates a new Array for the currentGuessArray variable
currentGuessArray = new boolean[20]; //Reisclef changed this line
// initialize all slots to false
Arrays.fill(currentGuessArray, false);
}