Используя цикл, чтобы выяснить количество оставшихся попыток - PullRequest
0 голосов
/ 24 мая 2018

У меня есть эта игра в догадки знаменитостей, где пользователь должен угадать имя знаменитости, учитывая только часть букв в имени.Я даю игроку «ключ» (egrge oney) и читаю его догадки.Программа должна иметь цикл, который позволяет им продолжать догадываться.Если они угадывают неправильно 3 раза, дайте им подсказку. Если они угадывают неправильно в четвертый раз (после подсказки), они проигрывают игру (и вы должны сказать им, кто был знаменитостью).

У меня проблемы с циклом.это то, что у меня есть до сих пор.

 System.out.println("Celebrity Guessing Game"); 
 String celeb = "John Lennon";

 System.out.print("Choose your difficulty (easy/medium/hard): ");
 String difficulty = input.nextLine();
 int maxtry = 3;
 if (difficulty.equals("easy"))
 {
     System.out.println("Here is your clue: " + celeb.substring(1, 4) + " " + celeb.substring(5,10));
    }
 else if (difficulty.equals("medium"))
 {
     System.out.println(("Here is your clue: " + celeb.substring(0, 3) + " " + celeb.substring(4,9)));
    }
 else if (difficulty.equals("hard"))
 {
     System.out.println(("Here is your clue: " + celeb.substring(2, 4) + " " + celeb.substring(5,7)));
    }


 System.out.print("What is your guess? ");
 String guess1 = input.nextLine();
 System.out.println("guess1 = " + guess1 + "   celeb = " + celeb );

 while (!guess1.equals(celeb) && maxtry == 3  ) {

    if (!guess1.equals(celeb) && maxtry == 3) {

    maxtry--; 
    System.out.println("Try Again." + " Number of guesses left : " + maxtry);
}     

   if   (guess1.equals(celeb) || guess1.equals("john lennon")) {
            System.out.println("Good Guess, you are correct!");
 }

Это мой вывод:

Игра на догадки знаменитостей

Выберите сложность (легкую / среднюю / сложную): легкую

Вот ваш ключ: он, Ленно

Каково ваше предположение?Джон Леннон

Угадай, 1 = Джон Леннон, знаменитость = Джон Леннон

Попробуй еще раз.Количество оставшихся догадок: 2

Хорошо, угадайте, вы правы!

^ Почему он проходит через оба оператора if ??

1 Ответ

0 голосов
/ 24 мая 2018

Проблема в проверке состояния.У него есть следующие проблемы:

  • Это должно быть maxtry > 0 вместо maxtry == 3
  • Вместо equals() использовать equalsIgnoreCase()

Подпискаисправлен фрагмент кода:

while (!guess1.equalsIgnoreCase(celeb) && maxtry > 0  ) {

    if (!guess1.equalsIgnoreCase(celeb) && maxtry > 0) {

        maxtry--; 
        System.out.println("Try Again." + " Number of guesses left : " + maxtry);
} 

Примечание: Вы не читаете ввод от пользователя для других попыток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...