有人可以为我解释这个java循环

时间:2011-06-19 21:35:13

标签: java

import java.util.Random;

class arel {
    public static void main(String args[]){
        Random rand = new Random();
        int[] number = new int[7];
        for(int roll = 1; roll < 100; roll++){
            ++number[1+rand.nextInt(6)];
        }
        System.out.println("Index\tValue");
        for(int count = 1; count<number.length; count++){
            System.out.println(count+"\t"+number[count]);
        }
    }
}

++number[1+rand.nextInt(6)];是否为每个索引插入随机数?

4 个答案:

答案 0 :(得分:2)

++number[1 + rand.Next(6)];

类似于:

// get a random number between 1 and 6
int index = 1 + rand.nextInt(6); 

// increase the element of the array at the given random index by 1
number[index] = number[index] + 1; 

答案 1 :(得分:0)

++number[1+rand.nextInt(6)];利用了Java中的数组是0初始化和操作顺序这一事实。

生成1到6之间的随机数。数组number的适当索引基于随机值递增。此操作多次循环。最后,使用第二个循环打印出每个值的打印次数。

但是,此代码从未使用number数组的0索引。实际上,它是浪费的空间,必须(和)在第二个循环中考虑。

答案 2 :(得分:0)

它正在做什么:

  1. 使用默认种子创建随机数生成器。
  2. 创建包含7个元素的数组(索引为0到6)
  3. 循环99次(滚动从1到99)
  4. 正如其他人所说的那样,随机地将一个数组元素的值递增一。请注意,零索引永远不会增加。
  5. 其余代码输出已在索引1到6中计算的值。
  6. 作者忽略零指数的事实有点气味。

答案 3 :(得分:0)

int[] number = new int[7]; // first index=0, last=6. 
                           // After creation all elements are 0

在for循环中,您调用99行:++number[1+rand.nextInt(6)];

++number[index]; // it's the same: number[index]=number[index]+1

rand.nextInt(n)方法返回0..n-1之间的随机整数。 javadoc

在您的示例中,您向该随机数添加一个,因此您的随机数在:1..6

之间

现在你可以理解所有的代码,所以我相信你会知道它的作用。请注意,您的数组的第一个索引为零,永远不会更改。