4

私は初心者のJavaクラスにいます。プロジェクトでは、条件がループ内のループでTRUE(correctGuess)またはFALSE(incorrectGuess)を返す回数を数える必要があります。私が抱えている問題は、内側のループ内でインクリメントされる変数が、ループが繰り返されるときにインクリメントされた値を保持しないことです。したがって、外側の while ループの条件が false になることはありません。私はプログラミングが初めてで、解決策がわかりません。このばかげた質問にお時間を割いていただき、ありがとうございます。ご不明な点がございましたら、より良い説明をさせていただきます。コードは次のようになります。

    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;   

繰り返しますが、アルゴリズム全体を再設計する必要があると思いますが、続行したい場合は、 for ループからerrorGuessインクリメント行を引き出してください。これにより、意図した結果が得られます。

    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 に答える