#java
#java
Вопрос:
Я пытаюсь создать программу, которая позволяет пользователю угадывать случайное число от 1 до 100, и она сообщит им, выше или ниже, пока не получит его.
Это то, что у меня есть на данный момент. Я не знаю, что делать дальше. выделенный общедоступный класс {
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
Random log = new Random();
//1 - 100
int number = (log.nextInt(100) 1);
System.out.println("Guess?");
int guess = keyboard.nextInt();
if (guess == number)
{
System.out.println("Congratulations!");
}
while (guess != number)
{
if (guess > number)
{
System.out.println("The number is lower than that.");
guess = keyboard.nextInt();
}
if (guess < number)
{
System.out.println("The number is higher than that.");
guess = keyboard.nextInt();
}
if (guess == number)
{
System.out.println("Congratulations!");
}
}
}//end of main
}//end of class
}//end of class
Комментарии:
1. Вы добираетесь туда. Подумайте еще о том, как долго вы должны позволять пользователю продолжать угадывать. Прямо сейчас пользователь может угадать число, если оно выше целевого. Затем они могут угадывать число до тех пор, пока оно меньше целевого. Но это может легко пойти не так. Допустим, цель равна 50. Я изначально предполагаю, что 49, что меньше, поэтому первый цикл заканчивается. Затем я предполагаю 57, что выше, поэтому второй цикл заканчивается. Я все еще не угадал фактическое число! Что вы действительно хотите сделать, так это выполнять цикл, пока предположение не равно целевому .
2. Вы должны проверить
guess != number
в своемwhile
цикле. Затем настройте сообщение с помощьюif
. Когда цикл заканчивается, игра окончена.3. Вы столкнетесь с бесконечными циклами в своем коде, потому что вы переопределили
guess
внутриwhile
цикла и разделили проверки на то, является лиguess
больше или меньше числа.guess
Используемое в качестве условия цикла while не совпадает с тем,int guess
которое вы создаете внутри цикла. подсказка подсказка![]()
4. Вам нужен только один
if
. Подумайте об этом.5. Я предлагаю вам протестировать программу и использовать отладчик, если она ведет себя не так, как ожидалось.
Ответ №1:
Вам нужен основной цикл, который проверяет, верно ли текущее предположение или нет, и оператор if, который определяет старший или младший бит. В настоящее время ваши два отдельных цикла while не будут выполнять эту работу.
Ответ №2:
У вас должно быть не два цикла, а только один. Вы хотите, чтобы ваша игра останавливалась, когда предположение равно числу, поэтому сделайте это своим конечным условием:
while (guess != number)
Затем в цикле проверьте, больше или меньше ли предположение числа, распечатайте соответствующее сообщение и прочитайте следующее предположение. Если цикл заканчивается, это означает, что пользователь нашел число.
РЕДАКТИРОВАТЬ: Чтобы избежать повторений:
System.out.println("Guess?");
int guess = keyboard.nextInt();
while (guess != number) {
if (guess > number) {
System.out.println("The number is lower than that.");
}
else {
System.out.println("The number is higher than that.");
}
guess = keyboard.nextInt();
}
System.out.println("Congratulations!");
Комментарии:
1. Как мне заставить его прочитать следующее предположение, не создавая новый класс int 99 раз?
2. Точно так же, как вы делаете это сейчас, в каждом из ваших двух циклов.
3. Я хочу, чтобы она могла перезаписать существующий интерфейс «угадай». Когда я делаю то, что вы сказали, он говорит, что int guess уже отключен в main.
4. ДА. Просто сохраните только один из ваших двух циклов. Замените его конечное условие на guess!= number. И перед вызовом «guess = keyboard.nextInt();» выведите соответствующее сообщение об ошибке. Вы должны просто удалить объявление типа «int» перед «guess = keyboard.nextInt();». Переменная уже объявлена перед циклом. Нет необходимости повторно объявлять это снова.
5. То, что у меня есть на данный момент, теперь в сообщении.