Как закончить цикл while во вложенном операторе if внутри цикла? (наверное легко)
Приведенный ниже код является частью игры по угадыванию чисел, в которой компьютер генерирует случайное число в заданном пользователем диапазоне. Здесь я пытаюсь ограничить пользователя до 10 догадок. Если он / она превышает 10, игра заканчивается:
int t1 = 0;//stores # of guesses
while(true){//loop begins
t1++;//increments each iteration to represent # of guesses
if(g1!=n){//if the guess is incorrect... (n = # user is trying to guess)
if(t1>10){//# of guesses cannot exceed 10
System.out.println("\nGAME OVER\nYou have exceeded the max # of tries!");
break;}//game ends if user exceeds max # of attempts
if(g1<n){System.out.println("\nGuess Higher!\n" + t1 + "attempt(s) so far");
continue;}//guess is too low
if(g1>n){System.out.println("\nGuess Lower!\n" + t1 + " attempt(s) so far");
continue;}}//guess is too high (loop ends)
Вывод, который я получаю, верен только на 1/2. Например, предположим, что компьютер сгенерировал число 12 в диапазоне 1-100. По 10-му (последнему) предположению пользователя будет напечатано: "GAME OVER..."; однако, он также напечатает, если предположение пользователя слишком низкое или слишком высокое, чего я не хочу.
Какие изменения я могу внести, чтобы исправить эту ошибку? Я думаю, что это связано с оператором 'break' во вложенном if.
1 ответ
Ваш вопрос, кажется, работает. Код прав, и он делает то, что должен делать. Но лучший и более эффективный способ написать тот же код:
// run a for loop that will let user guess 10 times
for (int i = 0; i < 10; i++)
{
// see if the guessed number is incorrect
if (g1 != n)
{
// check whats wrong with the number entered
// number of guesses cannot exceed 10
if ((i+1) >= 10)
{
System.out.println("\nGAME OVER\nYou have exceeded the max # of tries!");
}
else if (g1 < n)
{
// if user's guess is less than the number
System.out.println("\nGuess Higher!\n" + (i+1) + "attempt(s) so far");
}
else if (g1 > n)
{
// if user's guess is greater than the number
System.out.println("\nGuess Lower!\n" + (i+1) + " attempt(s) so far");
}
}
} // for loop ends