4

我在一个初学者 Java 课程中,对于一个项目,我需要计算一个条件返回 TRUE(correctGuess) 或 FALSE(incorrectGuess) 的次数,其中循环内有一个循环。我遇到的问题是内部循环中递增的变量在循环重复时不会保持其递增的值。因此,外部 while 循环的条件永远不会为假。我对编程真的很陌生,我无法弄清楚解决方案。提前感谢您花时间回答这个愚蠢的问题,如果有任何问题,我很乐意做出更好的解释。代码如下所示:

    int incorrectGuess = 0;
    int correctGuess = 0;   

    while(incorrectGuess < 6 && correctGuess < WORD_LENGTH) {

        //Gets the users first guess
        System.out.print("Please guess a letter [A-Z]: ");
        letterGuessed = keyboard.nextLine();

        for (int i = 0; i < WORD_LENGTH; i++){
            char value = wordLetterArray[i];
            String letterArray_value = String.valueOf(value);

            if(letterGuessed.equals(letterArray_value)){
                ++correctGuess;
            }

            else
                System.out.println("Bad comparison!");  

            if(i == WORD_LENGTH)
                ++incorrectGuess;   

        }   
    }
4

1 回答 1

1

看起来你可能需要重新设计整个算法,但我可以告诉你这个永远循环的主要问题是什么:

// Seems legit
while(incorrectGuess < 6 && correctGuess < WORD_LENGTH) {

// Still seems legit
for (int i = 0; i < WORD_LENGTH; i++)

    // Well, there's a problem, i will never be equal to word length 
    //because a condition of the for loop is i < WORD_LENGTH
    if(i == WORD_LENGTH)
        ++incorrectGuess;   

再一次,我觉得你需要重新设计你的整个算法,但如果你想让它继续,只需将不正确的Guess增量线拉出 for 循环。这将为您提供预期的结果:

    for (int i = 0; i < WORD_LENGTH; i++){
      char value = wordLetterArray[i];
      String letterArray_value = String.valueOf(value);

      if(letterGuessed.equals(letterArray_value)){
            ++correctGuess;
      }
      else {
            System.out.println("Bad comparison!");  
      }
    }   

   incorrectGuess++;   
于 2013-11-13T03:16:59.330 回答