Я не могу понять, почему зелье «play again» моего кода не работает - PullRequest
0 голосов
/ 29 сентября 2019

Итак, я использую Java уже несколько недель и хотел попробовать сделать свою первую маленькую игру.Все, что у меня было, работало нормально, пока я не попытался добавить функцию воспроизведения снова.Похоже, он просто пропускает небольшую часть кода внизу, и я не могу понять, почему.

Я пробовал перемещать разные части кода, но не могу понять, почему он не работает.

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("You have 10 tries to correctly guess a random number between 1 and 10. Good luck! \n"
            + "After you have entered a number, press ENTER to see if you won.");

    boolean play;
       play = true;

   do 
   {     
       int tries = 10, triesLeft = 0, triesUsed = 0;

       String YorN; 
    do
    {

        System.out.print("\nEnter A Number: ");

        int numInp = scan.nextInt();    
        int randomNumber = (int)(Math.random()*9) + 1;

        System.out.println("The number was " + randomNumber);

        if(numInp == randomNumber) {
            System.out.println("\nYou Win! Great job.");
            triesLeft = --tries;
            triesUsed = 10 - triesLeft;
            tries = -1;
        } else {
            System.out.println("Try Again...");
            tries --;
        }
    }
    while( tries > 0);

    String playAgain = (" Feel free to play again soon!");

    if(tries == 0) {
        System.out.println("\nOut of tries :(   You lose loser  " + playAgain);
    }
    if(tries == -1) {
    System.out.println("\nYou used " + triesUsed + " tries and had "
            + triesLeft + " tries left! :)" + playAgain);
    }

    System.out.print("\nDo you want to play again? Y or N?");

    YorN = scan.nextLine();

    if (YorN == ("Y") || YorN == ("y"))
    {
        play = true;
    }
    else if (YorN == ("N") || YorN == ("n"))
    {
        play = false;
    }
    else {}

   } while(play = true);

   if (play = false){
       System.out.println("\nGood Bye"); 
   }

}

Эта система, кажется, ничего не делает, когда я запускаю код:

YorN = scan.nextLine();

    if (YorN == ("Y") || YorN == ("y"))
    {
        play = true;
    }
    else if (YorN == ("N") || YorN == ("n"))
    {
        play = false;
    }
    else {}

Вот что я вижу, когда запускаю код:

Вы выиграли!Отличная работа.

Вы использовали 5 попыток, и у вас осталось 5 попыток!:) Не стесняйтесь играть снова скоро!

Хотите играть снова?Y или N?Введите число:

Это не дает мне места для ввода y или n, как следует.Если кто-нибудь знает, почему я был бы очень признателен за помощь

1 Ответ

0 голосов
/ 29 сентября 2019

Метод nextInt () или next () не читает ввод.обычно после номера вы должны нажать Enter, который не готов указанным выше способом.Чтобы избежать этого, необходимо сохранить 1 дополнительный вызов метода sc.nextLine ().он прочитает и откажется от ввода.

scan.nextLine();
YorN = scan.nextLine();

    if (YorN == ("Y") || YorN == ("y"))
    {
        play = true;
    }
    else if (YorN == ("N") || YorN == ("n"))
    {
        play = false;
    }
    else {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...