Коллеги, доброго дня. Не могу понять, как сделать правильно: Необходимо сделать игру, в которой нужно угадать число компьютера.
Я специально задал условие диапазон от 1 до 2, чтобы было легче разобраться и выявить ошибки. Работает практически все, кроме того, что не проверяет введенную попытку по условию if (), else if()....
Если же я угадываю число, то он сразу выводит правильный ответ. Но почему, когда я ввожу число, предположим, меньше того, что он загадал, будет и дальше идти, пока не закончится число попыток, указанное в условие for (... i < 10 ...)
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
Scanner gm = new Scanner(System.in);
System.out.print("Привет, друг! Я загадал число от 1 до 3, найдется ли силёнок угадать?: ");
String word = gm.nextLine();
switch (word) {
case "Нет":
System.out.print("Ну, что же, тогда заходи в другой раз!");
break;
case "Да":
System.out.print("Да начнется игра, сынок! Какое число я загадал?: ");
int count = gm.nextInt();
int a = 1;
int b = 2;
int random_number = a + (int) (Math.random() * b);
for (int i = 1; i < 10; i++) {
if (random_number > count) {
System.out.println("Не верно:)! Мое число больше > твоего ");
System.out.print("Какое число я загадал?: ");
int number2 = gm.nextInt();
} else if (random_number < count) {
System.out.println("Не верно:)! Мое число меньше < твоего ");
System.out.print("Какое число я загадал?: ");
int number3 = gm.nextInt();
} else {
System.out.println("Урааа, ты угадал это число!: " + random_number);
break;
}
}
}
}
}
Как я понял, вы хотите дать 9 попыток угадывания. Окей. Но когда мы не угадываем, вы записываете новый вариант в локальную переменную number
, а потом опять сверяете ваше загаданное число с count
.
Вот только ваш count
-то не изменился. Да и с чего же? Мы же создали какую-то никому не нужную number
, которую даже не трогаем после создания, а не перезаписали count
.
Ваша проблема решается записью новых вариантов в уже существующую переменную count
, а не в новую number
.
Так что просто меняйте все строчки
int number = ...
На
count = ...
И будет вам счастие!
У вас проверка идет по count
. Если вы не угадали число, то вы присваиваете переменной number
следующую попытку и не используете ее, при этом проверка все равно происходит по count
.
Попробуйте сделать следующее:
for (int i = 0; i < 10; i++) { //10 попыток
int count = gm.nextInt();
if (count < randomNumber) { //в Java используется CamelCase
//actions
} else if (count > randomNumber) {
//actions
} else {
//actions
break;
}
}
Теперь вы на каждой попытке будете задавать число в count
, и оно будет использовано в условиях.
Переменные number2
и number3
нигде не используется:
int number2 = gm.nextInt();
//и забыли
Соответственно, все введенные числа, кроме первого, игнорируются. Проверяется каждый раз только первое введенное число:
if(random_number > count)
Решить проблему, можно каждый раз обновляя переменную count
:
...
System.out.print("Какое число я загадал?: ");
count = gm.nextInt();
Заодно предложил бы дать ей более говорящее название, например inputNumber
.
Переменные number2
и number3
можно убрать за ненадобностью.
Scanner in = new Scanner(System.in);
for(int x=0; x<9; x++){
int ran = (int)(Math.random()*10);
System.out.println(Pattern.matches(Integer.toString(ran), in.nextLine()));
}
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Здравствуйте, в последних нескольких коммитаъ возникла странная ошибка, так и не получилоьс отследить откуда у нее корни растут, хотя до этого...
Необходимо сделать так, чтобы File Chooser Dialog делал доступными для выбора не все файлы, а только те, которые имеют расширениеsvg Мой код:
Нужно написать реализацию функции void merge(ArrayList a, ArrayList b) { // тело функции }
Подскажите как правильно реализоватьЕсть Фрагмент ListView, который программно вызываю взависимости от клика