使用带语句的if语句的空指针异常

时间:2015-06-20 13:29:36

标签: java arrays if-statement nullpointerexception

我一直在星星包围的线上得到一个空指针异常。我怎样才能解决这个问题?我不明白为什么会发生这种情况,因为我把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;        
}

2 个答案:

答案 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);
}