如何重新运行静态整数数组?

时间:2020-05-29 13:58:56

标签: java arrays random static

这是我要重新运行的数组:

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 个答案:

答案 0 :(得分:1)

返回数组毫无意义,因为调用方法rollDice()时已经有了对该数组的引用。

数组是按引用而不是按值发送的,这意味着您像使用int一样处理副本,而是修改原始数组。

将返回类型更改为void并删除返回,您的代码应按预期工作。

答案 1 :(得分:1)

{
    'token': '*******',
    'team_id': 'T311FQLU8CT',
    'api_app_id': 'K711C41FET3',
    'event': {
        'type': 'app_home_opened',
        'user': 'F511MQLU8KB',
        'channel': 'E211HGWLUKG',
        'tab': 'messages',
        'event_ts': '1590756776.212203'
    },
    'type': 'event_callback',
    'event_id': 'Ev014FLBULHK',
    'event_time': 1590756776
}

答案 2 :(得分:0)

您必须拥有这样的班级成员:

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 ++一样的静态函数变量。在这些语言中,它看起来可能像这样: (我为您编写了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;
}

如您所见,静态变量可以嵌入到这些函数中。如果您问我,那是一个很大的缺点,Java不支持此功能,因为我一直都在使用它来隐藏类命名空间中的内容。