java код не компилируется без ошибок - PullRequest
0 голосов
/ 30 апреля 2020

Этот код не работает. Что может быть не так? Я новичок и не могу понять, что не так. Я компилирую с помощью приложения. Код работает, но там нет распечатки. Что мне делать.

public class Main {
    public static void main(String[] args) {
        /*we will make a game in which we try to get same number on all of our dice. And count how much tries it take to match the dice.
        */

        int a = keepRolling();
        System.out.println(a);

    }

    //creating dice function first
    public static int rollDice() {
        double randomNumber = Math.random();
        randomNumber = randomNumber * 6;
        int randomAccurate = (int) randomNumber;
        randomAccurate = randomAccurate + 1;
        return randomAccurate;

    }


    public static int keepRolling() {
        int roll1 = rollDice();
        int roll2 = rollDice();
        int count = 1; //one time is already rolled when the function is called
        while (!(roll1 == roll2)) {
            int roll1 = rollDice();
            int roll2 = rollDice();
            count = count + 1;
        }
        return count;
    }

}

Ответы [ 5 ]

1 голос
/ 30 апреля 2020

Вы назначаете новые переменные в l oop, roll1 и roll2 никогда не меняются, это должно быть

public static int keepRolling() {
    int roll1 = rollDice();
    int roll2 = rollDice();
    int count = 1; //one time is already rolled when the function is called
    while (!(roll1 == roll2)) {
        roll1 = rollDice();
        roll2 = rollDice();
        count = count + 1;
    }
    return count;
}
1 голос
/ 30 апреля 2020

На его печать может уйти много времени (вы создали некий бесконечный l oop). Вероятность возникновения условия

 while (!(roll1 == roll2)) is very rare to be false.

Поскольку и roll1, и roll2 имеют случайные числа и равны, редки и занимают много времени. Вот почему ваша программа будет продолжать работать (или может дать исключение stackoverflow) и в очень редких случаях может вывести счетчик.

Не связано: вы должны были использовать

while(roll1 != roll2) instead of while (!(roll1 == roll2)) 

и не создавать новая переменная в l oop (используйте предыдущие переменные, объявленные при запуске метода)

0 голосов
/ 30 апреля 2020

приятель;

изменить

 while (!(roll1 == roll2)) {
            int dice1 = rollDice();
            int dice2 = rollDice();
            count = count + 1;
        }

на

 while (!(roll1 == roll2)) {
            int roll1 = rollDice();
            int roll2 = rollDice();
            count = count + 1;
        }

код перезапуска; Вы можете видеть это;

Ваш код содержит ошибку:

, в то время как (! (roll1 == roll2))

это условие всегда возвращает true; потому что roll1 и roll2 никогда не меняются;

0 голосов
/ 30 апреля 2020

Вы также можете сделать это

    public static int keepRolling() {
        int dice1, dice2, count = 0; 
        do {
            dice1 = rollDice();
            dice2 = rollDice();
            count++;
        } while (dice1 != dice2);
        return count;
    }

roll1 и roll2 полностью удалены в этом случае

0 голосов
/ 30 апреля 2020

rollDice, позаботьтесь об этом методе. он построен с помощью Math.random (), вы никогда не знаете, какой это номер, а это значит, что если вы хотите что-то напечатать, это может быть навсегда. ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...