D
D
dyrtage62020-07-22 23:30:45
Java
dyrtage6, 2020-07-22 23:30:45

Why does random value change in java?

I'm making a simple 'guess the number' game. In the process, I found out that for some reason the value of the random variable is constantly changing or something is wrong in the check. 5f18a1aae466a274973165.jpeg
Here is what the code looks like -

package com.company;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // все переменные
        Scanner infoUser = new Scanner(System.in);
        int choise = 4;
        String name;

        // если что тут правила
        System.out.println("Угадай число #0.1");
        System.out.print("Как вас зовут: ");
        name = infoUser.nextLine();

        System.out.println(" ");
        System.out.println(name + " попал в самую суровую игру в мире - 'Угадай число'!");

        // бесконечно играем, до выхода
        while (choise != 0) {
            System.out.println("1. Легкий(от 1 до 100 за 6 попыток)");
            System.out.println("2. Средний(от 1 до 300 за 8 попыток)");
            System.out.println("3. Сложный(от 1 до 1000 за 11 попыток)");
            System.out.print("Выбери уровень игры: ");
            choise = infoUser.nextInt();
            switch (choise) {
                case 1:
                    level1();
                    break;
                case 2:
                    level2();
                    break;
                case 3:
                    level3();
                    break;
            }
        }
    }

        // 1 уровень
        public static void level1 () {
            System.out.println("Уровень игры: легкий. Введите число");
            for (int arr = 0; arr <= 5; arr++) {
                // постоянно спрашиваем число
                Scanner infoUser = new Scanner(System.in);
                final int random_number = 1 + (int) (Math.random() * 100);
                System.out.println(" ");
                System.out.print("Попробуй угадать: ");
                int userNum1 = infoUser.nextInt();

                // проверки
                if (userNum1 == random_number) {
                    System.out.println("Поздравляю! Вы угадали число за " + arr + " попыток");
                    System.out.println(" ");
                    break;
                } else if (random_number > userNum1)
                    System.out.println("Ваше число мальнькое");
                else if (random_number < userNum1)
                    System.out.println("Ваше число большое");

                if (arr == 5) {
                    System.out.println("Вы проиграли. Это было число " + random_number);
                    System.out.println(" ");
                    break;
                }
            }
        }

        // 2 уровень
        public static void level2 () {
            System.out.println("Уровень игры: средний. Введите число");
            for (int arr = 0; arr <= 7; arr++) {
                // постоянно спрашиваем число
                Scanner infoUser = new Scanner(System.in);
                final int random_number2 = 1 + (int) (Math.random() * 300);
                System.out.println(" ");
                System.out.print("Попробуй угадать: ");
                int userNum2 = infoUser.nextInt();

                // проверки
                if (userNum2 == random_number2) {
                    System.out.println("Поздравляю! Вы угадали число за " + arr + " попыток");
                    System.out.println(" ");
                    break;
                } else if (random_number2 > userNum2)
                    System.out.println("Ваше число мальнькое");
                else if (random_number2 < userNum2)
                    System.out.println("Ваше число большое");

                if (arr == 7) {
                    System.out.println("Вы проиграли. Это было число " + random_number2);
                    System.out.println(" ");
                    break;
                }
            }
        }

        // 3 уровень
        public static void level3 () {
            System.out.println("Уровень игры: сложный. Введите число");
            for (int arr = 0; arr <= 10; arr++) {
                // постоянно спрашиваем число
                Scanner infoUser = new Scanner(System.in);
                final int random_number3 = 1 + (int) (Math.random() * 1000);
                System.out.println(" ");
                System.out.print("Попробуй угадать: ");
                int userNum3 = infoUser.nextInt();

                // проверки
                if (userNum3 == random_number3) {
                    System.out.println("Поздравляю! Вы угадали число за " + arr + " попыток");
                    System.out.println(" ");
                    break;
                } else if (random_number3 > userNum3)
                    System.out.println("Ваше число мальнькое");
                else if (random_number3 < userNum3)
                    System.out.println("Ваше число большое");
                if (arr == 10) {
                    System.out.println("Вы проиграли. Это было число " + random_number3);
                    System.out.println(" ");
                    break;
                }
            }
        }
}

How to fix it?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Oparin, 2020-07-23
@dyrtage6

because

final int random_number = 1 + (int) (Math.random() * 100);

is inside the loop and is executed at each step

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question