看看这段程序!

yeah315 2006-03-01 03:13:06
public class NumChoice
{
public static void main(String[] args)
{
int setCount = 5;
int setSize = 6;
int range = 49;
int num;
int luckyCount;
for(int i=1;i<=setCount;i++)
{
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
int num6=0;
for(luckyCount=1;luckyCount<=setSize;luckyCount++)
{
num=(int)(range*Math.random())+1;
switch(luckyCount){
case 1:
num1=num;
break;
case 2:
if(num!=num1)
num2=num;
break;
case 3:
if(num!=num1 && num!=num2)
num3=num;
break;
case 4:
if(num!=num1 && num!=num2 && num!=num3)
num4=num;
break;
case 5:
if(num!=num1 && num!=num2 && num!=num3 && num!=num4)
num5=num;
break;
case 6:
if(num!=num1 && num!=num2 && num!=num3 && num!=num4 && num!=num5)
num6=num;
break;
}
}

System.out.print("\nsetnum "+i+": "+num1+" "+num2+" "+" "+num3+" "+num4+" "+num5+" "+num6);

}



}
}
运行结果有"0"
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pxywin 2006-03-01
  • 打赏
  • 举报
回复
看了楼上的明白了!谢谢
yeah315 2006-03-01
  • 打赏
  • 举报
回复
嗯,我也试了,现在我也明白了,谢谢大家指教!
liukang520236 2006-03-01
  • 打赏
  • 举报
回复
思考了半天,终于知道为什么了

出现0的时候是因为num没有被赋值
没有被赋值的原因是因为产生的随机数与前面的数字相同了
程序就跳出来了
又从for(luckyCount=1;luckyCount<=setSize;luckyCount++)开始执行
打个比方
num1=1
num2=2
这个时候该给num3赋值了,但是产生的随机数却是1,不符合赋值的条件阿,程序跳出。
开始给num4赋值

所以是楼主误会了,0并不是产生的随机数,而是本来赋的值!
简单测试方法,把num1--num6全部赋值成-1,多做几组实验你就明白了。
zhao_417 2006-03-01
  • 打赏
  • 举报
回复
楼主什么意思?
kevinmartin 2006-03-01
  • 打赏
  • 举报
回复
根据这段代码,0就是说明,1/49的概率是很大的,当出现前面已经出现过的num时,当前的numi就不做处理,=0了。

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧