Я новичок в программировании. Я создавал игру «Камень, ножницы, бумага». У меня возникла эта проблема. Как перезапустить его, если пользователь дает неверный выбор. Я попробовал команду 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);
Итак, если кто-то введет неверный выбор, я хочу, чтобы цикл перезапустился, например, повторите попытку. Я не смог найти способа сделать это (я новичок, поэтому не знаю обо всех методах). Вы можете мне помочь
хорошо спасибо. Я думал это что-то в циклах
continue — «что-то в циклах».
также возможно выполнить (внутренний) цикл, пока ввод недействителен...
Этот вопрос похож на: Как выйти из метода в Java?. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.




Если вы хотите, чтобы пользователь сделал повторный выбор в случае недопустимого ввода, вы можете добавить 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 или любого языка, с которым вы работаете. Приятного кодирования!
Спасибо. Я все еще учусь. Я мало что знал о правилах переполнения стека. поэтому я задал нубский вопрос. Спасибо за поддержку.
Без вопросов! Наслаждайтесь кодированием. И не бойтесь задавать вопросы.
Вы ищете утверждение продолжить. Однако я бы посоветовал вам изучить основы языка, прежде чем задавать вопросы в Stack Overflow.