求代码解释
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);
}
}
这个代码有问题,无法正常运行
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);//初始化完成,循环的总次数
}
found[]数组随机赋值为true;
2楼已经给出了详尽的解释,这段代码要实现什么功能呢,亲