2 suiqiji206 suiqiji206 于 2015.05.27 20:06 提问

[JAVA]数组 求代码解释

求代码解释

public class CouponCollector {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);

boolean[] found = new boolean[N];

int cardcnt = 0;

int valcnt = 0;

    while (valcnt < N) {
        int val = (int) (Math.random() * N);   
        cardcnt++;                             
        if (!found[val]) valcnt++;             
        found[val] = true;                    
    }


    System.out.println(cardcnt);
}

}

4个回答

qq_26313453
qq_26313453   2015.05.27 20:23

这个代码有问题,无法正常运行

suiqiji206
suiqiji206 咦?我可以运行呀……
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.05.27 21:38
 public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);//class执行的时候输入的最大值

        boolean[] found = new boolean[N];//初始化N维布尔型数组,初始值是false

        int cardcnt = 0;

        int valcnt = 0;
        while (valcnt < N) {//看着像是进行什么牌初始化,一直摇初始化N张
            int val = (int) (Math.random() * N);   //随机获取一个0-(N-1)的整数
            cardcnt++;     //没循环一次加1                        
            if (!found[val]) valcnt++; //如果没有获取过Val这个整数,则该数字有效,数量加一
            found[val] = true; //该数字所对应的状态设为true,表示该数字已经初始化过,与if (!found[val]) valcnt++时使用
        }


            System.out.println(cardcnt);//初始化完成,循环的总次数
    }
frank_20080215
frank_20080215   2015.05.27 22:17

found[]数组随机赋值为true;

u012271952
u012271952   2015.05.27 23:28

2楼已经给出了详尽的解释,这段代码要实现什么功能呢,亲

Csdn user default icon
上传中...
上传图片
插入图片