基本Java数组和For循环

时间:2018-08-25 15:22:27

标签: java arrays for-loop random

我正在学习Java类,并且一遍又一遍地阅读了相同的解释,我只是想确保自己正确地理解了它。

他们提供的班级示例是掷骰子游戏,他们希望查看每个号码掷骰的频率。

我不确定的代码段是:

for(int roll = 1; roll < 1000; roll++){
    ++freq[1+rand.nextInt(6)];
}

我了解这部分:1+rand.nextInt(6)

但是我不明白这部分:++freq及其如何计算结果

我将其理解为(对于示例,我掷了4):

for(int roll = 1; roll < 1000; roll++){
    ++freq[4];
    //all indexes in freq are == 0 to start
    //freq[4] is index 4 in the array. It was 0 but is now == to 1
    //freq[0], freq[1], freq[2], freq[3], freq[5], and freq[6] are all still == to 0
}

for(int roll = 1; roll < 1000; roll++){
    ++freq[6];
    //freq[6] is index 6 in the array. It was 0 but is now == to 1
    //freq[0], freq[1], freq[2], freq[3], and freq[5] are all still == to 0
    //freq[4] and freq[6] are both == to 1
}

这正确吗?

1 个答案:

答案 0 :(得分:3)

int[] freq = new int[7];

    for(int roll = 1; roll < 1000; roll++){
        ++freq[1+rand.nextInt(6)];
    }

在上面的代码rand.nextInt(6)中返回一个从0到5的值,该值用于访问数组freq的相关整数值

++freq部分将访问的整数值增加1。

示例:  如果rand.nextInt(6)返回2

freq[1 + 2] = freq[1 + 2] + 1;

但是,从1 + rand.nextInt(6)开始,永远不会产生0。因此,freq数组的第一个元素应被忽略。

freq[n]会给您nth面孔的频率。