一个死循环问题????
下面这两句有什么不同么?
ori[i]=(int)Math.random()*10; (1)
ori[i]=(int)(Math.random()*10;) (2)
放在如下的循环中
for(int i=0;i <=3;i++){
ori[i]=(int)Math.random()*10;
//ori[i]=(int)(Math.random()*10);
for(int j=0;j <=i-1;j++){
if((i!=j)&&(ori[i]==ori[j])){
i=i-1;
break;
}
}
}
时,为啥第一句是是死循环呢????
想不明白…………
[解决办法]
(int)Math.random()等于0
因为Math.random()比1小
[解决办法]
Math.random()生成的数在0、1之间,你第一种方式将Math.random()先强制转换,结果一定是0,ori[i]=(int)Math.random()*10效果实际上就是ori[i]=0;这样就不难理解为什么一直是死循环了
[解决办法]
修改成 ori[i]=(int)(Math.random()*10)
[解决办法]
XXKKFF(齐次边界条件有界弦自由振动方程混合问题的分离变量法)
说的好!
[解决办法]
路过 学习
[解决办法]
没错。来晚了。只有地板了.............
[解决办法]
看来为了正常运行多加点括号还是有必要的
[解决办法]
适当的括号代码更加容易读
[解决办法]
我是来学习的,我看了楼上的回复还没有明白,你说的到是很对,但是好象那不是产生死循环的原因吧,也就是ori[i]全部元素都是0罢了.