这是我要重新运行的数组:
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()
只是出错了。
答案 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不支持此功能,因为我一直都在使用它来隐藏类命名空间中的内容。