Как перезапустить цикл переключения в Java

Я новичок в программировании. Я создавал игру «Камень, ножницы, бумага». У меня возникла эта проблема. Как перезапустить его, если пользователь дает неверный выбор. Я попробовал команду restart();, но ничего не происходит.

 Scanner sc = new Scanner(System.in);
        System.out.println("Hey player enter your name");
        String name = sc.nextLine();
        name = name.toLowerCase();
        int human_score=0;
        int pc_score=0;
        System.out.println("How many rounds u want to play "+name);
        byte rounds = sc.nextByte();
        if (rounds>10){
            System.out.println("Please choose up to 10 rounds. Above is not allowed");
            System.out.println("Exiting the game");
            System.exit(0);
        }
        int i =1;
        while (i<=rounds) {
            Random rand = new Random();
            int pc = rand.nextInt(3);
            pc += 1;
//            System.out.println(pc);
            System.out.println("What u choose?");

            int human = sc.nextInt();
            switch (human) {
                case 1 -> System.out.println("You choose rock");
                case 2 -> System.out.println("You choose paper");
                case 3 -> System.out.println("You choose scissors");
                default -> {
                    System.out.println("Invalid Choice");

                }

            }
            switch (pc) {
                case 1 -> System.out.println("I choose rock");
                case 2 -> System.out.println("I choose paper");
                case 3 -> System.out.println("I choose scissors");
            }
            if (human == pc) {

                System.out.println("Its a draw");
            } else if (human == 1 && pc == 2) {
                System.out.println("You lost. Better luck next time");
                pc_score+=1;
            } else if (human == 1) {
                System.out.println("Congrats. You won.");
                human_score+=1;
            } else if (human == 2 && pc == 1) {
                System.out.println("Congrats. You won.");
                human_score+=1;
            } else if (human == 2) {
                System.out.println("You lost. Better luck next time");
                pc_score+=1;
            } else if (human == 3 && pc == 1) {
                System.out.println("You lost. Better luck next time");
                pc_score+=1;
            } else if (human == 3) {
                System.out.println("Congrats. You won.");
                human_score+=1;
            }
            i+=1;
        }
        if (human_score==pc_score){
            System.out.println("Its a draw. Wanna play again?");
        } else if (human_score>pc_score){
            System.out.println("Congrats you won. Wanna challenge again?");
        }else System.out.println("Skill issue. This code is fine");

        System.out.println("PC\t"+name+"\n"+pc_score+"\t"+human_score);

Итак, если кто-то введет неверный выбор, я хочу, чтобы цикл перезапустился, например, повторите попытку. Я не смог найти способа сделать это (я новичок, поэтому не знаю обо всех методах). Вы можете мне помочь

Вы ищете утверждение продолжить. Однако я бы посоветовал вам изучить основы языка, прежде чем задавать вопросы в Stack Overflow.

Robby Cornelissen 04.07.2024 05:05

хорошо спасибо. Я думал это что-то в циклах

Tomu is here 04.07.2024 05:09
continue — «что-то в циклах».
Sören 04.07.2024 06:10

также возможно выполнить (внутренний) цикл, пока ввод недействителен...

user85421 04.07.2024 08:43

Этот вопрос похож на: Как выйти из метода в Java?. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.

silveiralexf 06.07.2024 13:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите, чтобы пользователь сделал повторный выбор в случае недопустимого ввода, вы можете добавить continue в случае по умолчанию. Или, если вы также хотите увеличить раунд, увеличьте значение i перед добавлением ключевого слова continue.

        switch (human) {
            case 1 -> System.out.println("You choose rock");
            case 2 -> System.out.println("You choose paper");
            case 3 -> System.out.println("You choose scissors");
            default -> {
                System.out.println("Invalid Choice");
                continue;

            }

        }

или если вы также хотите увеличить раунд,

        switch (human) {
            case 1 -> System.out.println("You choose rock");
            case 2 -> System.out.println("You choose paper");
            case 3 -> System.out.println("You choose scissors");
            default -> {
                System.out.println("Invalid Choice");
                i += 1;
                continue;
            }

        }

Хотя этот код требует значительных улучшений, вам следует попытаться начать с основ Java или любого языка, с которым вы работаете. Приятного кодирования!

Спасибо. Я все еще учусь. Я мало что знал о правилах переполнения стека. поэтому я задал нубский вопрос. Спасибо за поддержку.

Tomu is here 09.07.2024 06:00

Без вопросов! Наслаждайтесь кодированием. И не бойтесь задавать вопросы.

Shashank Garg 09.07.2024 20:24

Другие вопросы по теме