Java игра. Угадай число

205
04 апреля 2018, 11:17

Коллеги, доброго дня. Не могу понять, как сделать правильно: Необходимо сделать игру, в которой нужно угадать число компьютера.

Я специально задал условие диапазон от 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;
                }
            }
        }
    }
}

Answer 1

Как я понял, вы хотите дать 9 попыток угадывания. Окей. Но когда мы не угадываем, вы записываете новый вариант в локальную переменную number, а потом опять сверяете ваше загаданное число с count.

Вот только ваш count-то не изменился. Да и с чего же? Мы же создали какую-то никому не нужную number, которую даже не трогаем после создания, а не перезаписали count.

Ваша проблема решается записью новых вариантов в уже существующую переменную count, а не в новую number.

Так что просто меняйте все строчки

int number = ...

На

count = ...

И будет вам счастие!

Answer 2

У вас проверка идет по 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, и оно будет использовано в условиях.

Answer 3

Переменные number2 и number3 нигде не используется:

int number2 = gm.nextInt();
//и забыли

Соответственно, все введенные числа, кроме первого, игнорируются. Проверяется каждый раз только первое введенное число:

if(random_number > count)

Решить проблему, можно каждый раз обновляя переменную count:

...
System.out.print("Какое число я загадал?: ");
count = gm.nextInt();

Заодно предложил бы дать ей более говорящее название, например inputNumber.

Переменные number2 и number3 можно убрать за ненадобностью.

Answer 4
        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()));
    }
READ ALSO
Проблема с контроллерами в Spring-MVC

Проблема с контроллерами в Spring-MVC

Здравствуйте, в последних нескольких коммитаъ возникла странная ошибка, так и не получилоьс отследить откуда у нее корни растут, хотя до этого...

255
File Chooser Dialog со специфичным расширением (.svg)

File Chooser Dialog со специфичным расширением (.svg)

Необходимо сделать так, чтобы File Chooser Dialog делал доступными для выбора не все файлы, а только те, которые имеют расширениеsvg Мой код:

219
Эффективная сортировка ArrayList

Эффективная сортировка ArrayList

Нужно написать реализацию функции void merge(ArrayList a, ArrayList b) { // тело функции }

385
Fragment and SimpleCursorAdapter

Fragment and SimpleCursorAdapter

Подскажите как правильно реализоватьЕсть Фрагмент ListView, который программно вызываю взависимости от клика

178