2015-06-20 69 views
0

我在星星包围的行处不断收到空指针异常。我怎样才能解决这个问题?我不明白为什么会发生,因为我用false填充currentGuessArray。 (我没有包括所有的我的代码,只是有currentGuessArray做的部分。)带有数组的if语句的空指针异常

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

currentGuessArray'数组是静态的任何具体原因? – Pshemo

回答

4

假设initGuess被调用,你shadowingcurrentGuessArray。更换

boolean [] currentGuessArray = new boolean[20]; 

currentGuessArray = new boolean[20]; 
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); 
}