#java #loops #while-loop
#java #циклы #цикл while
Вопрос:
Я пытаюсь, чтобы мой цикл выполнялся только три раза. Поэтому, если пользователь не угадывает правильное число после своего третьего предположения, цикл заканчивается, который у меня есть, но он не отображает, каким было число. Мне нужно, чтобы число отображалось после третьего предположения, но я не уверен, почему оно не отображает правильное число.
import java.util.Scanner;
public class GuessNumberDoWhileA {
public static void main(String[] args) {
//Generate random number from 1-10
int number = (int) (Math.random()*9 1);
int count = 0;
//Auto Generated Method stub
Scanner Input = new Scanner(System.in);
//Tell the user to guess a number
System.out.println("Guess a number between 1 and 10");
//int guess = -1;
//while (guess != number) {
while (count < 3) {
count ;
System.out.print("nEnter your guess: ");
int guess = Input.nextInt();
if (guess == number)
System.out.println("Correct the number was " number);
else if (guess > number)
System.out.println("Your guess is to high try again!");
else if (guess < number)
System.out.println("Your guess is to low try again!");
else
System.out.println("The correct number is " number);
}
System.out.println("The number was " number);
}
}
Комментарии:
1. В каком случае вы ожидаете печатать
"The correct number is " number
? Aguess
может быть либо равноnumber
, либо больше, либо меньше. 4-го варианта нет.2. @Amongalen это именно то, что мне нужно. Если они не угадывают это по одному из трех предположений, четвертого предположения нет, просто отобразите, каким было число.
3. Для этого и нужен
System.out.println("The number was " number);
внешний цикл. Что вам нужно, так это дополнительное условие в вашем цикле, которое не требует дополнительных предположений, если вы уже получили правильное число. В настоящее время вы просматриваете все три предположения, даже если первое или второе предположение уже было правильным.
Ответ №1:
Вам нужна boolean
переменная, которую можно использовать для проверки того, смог ли пользователь правильно угадать число или нет. Начальное значение этой логической переменной должно быть false
.
Вам не нужен последний else
оператор в цикле. Если пользователь правильно угадывает число, установите для boolean
переменной значение true
и выйдите из цикла. После цикла проверьте, является ли boolean
переменная false
или нет. Если это так false
, это означает, что пользователь не смог угадать число, поэтому отобразите правильное число пользователю.
Если пользователь сможет угадать число, то первый if
оператор в цикле выведет правильное число на консоль и выйдет из цикла. Он также установит логическую переменную в true
, поэтому правильное число будет напечатано только один раз на консоли.
boolean guessed = false;
while (count < 3) {
count ;
System.out.print("nEnter your guess: ");
int guess = Input.nextInt();
if (guess == number) {
System.out.println("Correct the number was " number);
guessed = true;
break;
}
else if (guess > number)
System.out.println("Your guess is to high try again!");
else if (guess < number)
System.out.println("Your guess is to low try again!");
}
if (!guessed) System.out.println("Number was: " number);
Комментарии:
1. Это имеет смысл. Теперь я знаю, почему, даже когда я догадался, цикл продолжал выполняться. Большое спасибо! Мне еще многому предстоит научиться!