wolverine777
@wolverine777

Почему внезапно не работает IF?

Привет, я пытаюсь решить задание "забег улиток" в котором как только любая из "улиток" наберет 50 очков - игра останавливается.
Не пойму почему if (tab[z] < 50) не работает и цикл завершается где-то в районе 18 или 20?

Тогда как если заменить наwhile (tab[z] < 50) - принцип работает но немного криво - массив проверяется на то чтобы все его элементы дошли до состояния меньше 50 - так что while не подходит.

Не пойму в чём дело? Ведь при использованииif применимо к каждому элементу массива программа должна запускаться каждый раз когда элемент < 50 а он почему-то останавливается..
Спасибо!

public static void main(String[] args) {
        int dice;
        int[] tab = new int[3];


        System.out.println("\n\t -= SNAIL RUN =- ");

        for (int z=0; z<tab.length;z++){
            if (tab[z] < 50)  {

                System.out.println("\n");
                for (int i=0; i<tab.length; i++) {

                    // Generating random numbers
                    dice = ThreadLocalRandom.current().nextInt(1, 6 + 1);
                    tab[i] += dice;

                    System.out.print("Dice"+(i+1)+"="+dice+" | ");
                }

                System.out.println("\n");
                for (int i=0; i<tab.length; i++){
                    System.out.print(tab[i] + " | ");
                }

                System.out.println("\n________________________________________________________________");

            }
        }

        System.out.println("\nGAME OVER");
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Потому что у вас для каждого элемента из tab прогоняется вся логика приложения.
Должно быть как-то так:
int dice;
        int[] tab = new int[3];
        boolean gameOver = false;


        System.out.println("\n\t -= SNAIL RUN =- ");

        while (!gameOver) {
            System.out.println("\n");
            for (int i = 0; i < tab.length; i++) {

                // Generating random numbers
                dice = ThreadLocalRandom.current().nextInt(1, 6 + 1);
                tab[i] += dice;

                if (tab[i] > 50) {
                    gameOver = true;
                }

                System.out.print("Dice" + (i + 1) + "=" + dice + " | ");
            }

            System.out.println("\n");
            for (int i = 0; i < tab.length; i++) {
                System.out.print(tab[i] + " | ");
            }

            System.out.println("\n________________________________________________________________");
        }

        System.out.println("\nGAME OVER");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
06 мая 2024, в 10:17
15000 руб./за проект
06 мая 2024, в 10:02
3000 руб./за проект