Я делаю программу для задания, где я должен позволить пользователю угадать 3 номера блокировки, чтобы разблокировать ее. Если они не могут сделать это в течение 3 догадок, игра заканчивается. Достаточно просто, и насколько я могу судить, я делаю все правильно, поэтому не знаю, где я ошибаюсь. Вот фрагмент кода:Guessing Loop Stuck Java
do{
try{
String g1Str = JOptionPane.showInputDialog("Enter number 1:");
g1 = Integer.parseInt(g1Str);
looper = 2;
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null,"Not a Number");
looper = 1;
}
if(g1!=num1){
JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
lives = lives - 1;
looper = 1;
}
else if(g1==num1){
JOptionPane.showMessageDialog(null, "Correct!");
looper = 2;
}
}while(looper==1||lives!=0);
Вот мое мышление: Попросите пользователя ввести номер, попытка преобразовать строку в целое число. Я использую try catch, чтобы пользователь действительно вводил число, а не письмо. После этого я вижу, соответствует ли предположение реальному числу. Если это не так, вы теряете жизнь (жизнь была объявлена как 3 ранее), а затем установите looper на 1, чтобы вы могли попытаться снова угадать, если у вас достаточно жизни. Если его право, петлитель установлен на 2, и цикл прерывается, и в этот момент пользователь может угадать второе число. Я хочу, чтобы цикл оставался активным, если у вас достаточно жизней, поэтому я устанавливаю оператор while в том случае, когда looper равен 1, OR, когда жизни не равны 0. Но, похоже, он не разбивает цикл, если жизнь идти вниз до 0. заранее спасибо
@ DoanCuong Почему это лучшее решение? – Pete
Извините, мой плохой, я не сделал это через –
Итак, я вижу, что случилось сейчас, я был в предположении, что ИЛИ означает, что если кто-то из них ошибается, он сломается. Исправлено, и я добавил 'if (lives == 0) {looper = 2}' в начале других циклов. благодаря – Dave555