Как л oop основной класс - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сделать мое приложение для работы с ножницами из каменной бумаги l oop, если пользователь этого хочет и не уверен как. Я учусь на уроке программирования, но я сломал свой код, пытаясь исправить его в прошлый раз, и сумел вернуться к тому, что у меня было раньше.

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

    while (playAgain.equals("Y") || playAgain.equals("y"))
        {
        String playerChoice = "";
        while (!playerChoice.equals("R") && !playerChoice.equals("P") && !playerChoice.equals("S"))
            {
            System.out.println("Please enter a correct character\n (R)ock, (P)aper, or (S)cissors.");
            playerChoice = scan.next();

         //Player choice to upper case to minimize the number of wrong inputs//
            playerChoice = playerChoice.toUpperCase();
            }

        int randNum = (int) (Math.random() * 3);
        String compChoice = "";
        switch (randNum)
            {
            case 0:
                compChoice = "R";
                break;
            case 1:
                compChoice = "P";
                break;
            case 2:
                compChoice = "S";
                break;
            }
        System.out.println("The computer chose: " + compChoice);

        if (playerChoice.equals(compChoice))
            {
            System.out.println("It's a Tie!");
            } else if (playerChoice.equals("R") && compChoice.equals("S") || playerChoice.equals("P") && compChoice.equals("R") || playerChoice.equals("S") && compChoice.equals("P"))
            {
            System.out.println("You Win!");
            } else
            {
            System.out.println("You Lose");
            }
        System.out.println("Would you like to play again?\n(Y or N)");
        playAgain = scan.nextLine();
        if (playAgain.equals("N"))
            {
            break;
            }
        }
    }

1 Ответ

0 голосов
/ 29 января 2020

Решение заключается в том, что вам нужно согласие между вызовами методов сканирования.

Либо оба должны быть nextLine, либо оба должны быть следующими.

В качестве отступления - мне очень нравится использование .equalsIgnoreCase вместо .equals для сравнения строк, так как это делает код простым и легким для чтения. (Вы можете пропустить, например, toUpperCase и дополнительные условия)


Что касается того, почему / что именно делает сканер, который вызывает эту проблему, это гораздо более подробно и суетно.

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