Как повторно запустить целочисленный массив stati c? - PullRequest
1 голос
/ 29 мая 2020

вот массив, который я хочу перезапустить:

public static int[] rollDice(int dice[]) {
    // generate 5 random numbers / update dice array
    for (int i = 0; i < dice.length; i++) {
        dice[i] = (int)(Math.random() * 6 + 1);
    }

    return dice;
}

Если я хочу сбросить этот массив и найти новые случайные числа, как мне это сделать? Я пробовал rollDice() только чтобы получить ошибку.

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Нет смысла возвращать массив, поскольку у вас уже есть ссылка на массив при вызове метода rollDice ().

Массивы отправляются по ссылке, а не по значению, что означает, что вы не работает с копией, как с целыми числами, вместо этого вы изменяете исходный массив.

Измените тип возвращаемого значения на void и удалите возврат, и ваш код должен работать, как задумано.

1 голос
/ 29 мая 2020
You can get every time a new dynamic length array with random numbers, and you can access by call rollDice(integer value). 

public static int[] rollDice(int length) {
         final int dice[] = new int [length];
        // generate array with random values
        for (int i = 0; i < length; i++) {
            dice[i] = (int)(Math.random() * length + 1);
        }

        return dice;
    }
0 голосов
/ 29 мая 2020

У вас должен быть такой член класса:

public static final int[] dice = new int[5];

Затем, чтобы бросать / перебрасывать кости, используйте ваш метод, иначе просто получите доступ к dice.

public static void rollDice() {
    // generate 5 random numbers / update dice array
    for (int i = 0; i < dice.length; i++) {
        dice[i] = (int)(Math.random() * 6 + 1);
    }
}

Интересный факт: Java не имеет статических c функциональных переменных, как C и C ++. На этих языках это могло бы выглядеть так: (Я написал это как java Функция для вас Java ребята)

public static int[5] rollDice(boolean reroll) {
    static final int[] dice = new int[5];
    if (reroll) for (int i = 0; i < dice.length; i++) {
        dice[i] = (int)(Math.random() * 6 + 1);
    }
    return dice;
}

Как видите, в них могут быть встроены переменные stati c функции. Если вы спросите меня, это огромный минус, Java не поддерживает это, поскольку я использую его все время, чтобы скрыть их из пространства имен классов.

...