突然很奇怪(int)Math.random()*10只等于0
int sign; //全局变量
sign = (int)Math.random()*10; //方法中调用,sign在whil(true)中一直等于0;
//代码
public void getLotteryNumber() throws Exception{
//System.out.println(sign);
int sign_0 = 0;
int time = 0;
while(true){
sign = (int)Math.random()*10;
//sign = 9;
System.out.println((this.getClass().getResource("") +"pictrue/" + sign + ".jpg").substring(5, (this.getClass().getResource("") +"pictrue/" + sign + ".jpg").length()));
labelNumber [sign_0].setIcon(new ImageIcon((this.getClass().getResource("") +"pictrue/" + sign +".jpg").substring(5, (this.getClass().getResource("") +"pictrue/" +sign + ".jpg").length())));
labelNumber [sign_0].updateUI();
sign_0 ++;
time ++;
if(sign_0 == 5){
sign_0 = 0;
}
if(time == 100){
break;
}
Thread.sleep(100);
}
}
------最佳解决方案--------------------因为先执行了(int)Math.random()后又执行的*10操作
------其他解决方案-------------------- (int)Math.random()*10; //方法中调用,sign在whil(true)中一直等于0;
他其实是怎么算的 ((int)Math.random())*10;
你应该这么写(int) (Math.random() *10);
------其他解决方案--------------------汗一个...Math.random的返回内容是从0-1的小数
你直接给他转成int,当然是0了...
另:获取随机数建议用Random类
Random ran = new Random();
System.out.println(ran.nextInt(10));
------其他解决方案--------------------
同意楼上,先强制转int,由于random()小于0,所以怎么取都是0,然后再*10的话也肯定是0