我想让随机生成一个各位都不同的四位数,做猜数字游戏用,可是运行老是出现死循环,请高手们帮我检查检查,谢谢了
int soNum=(int)(Math.random()*10000);
boolean judge1=true,judge=false;
while(soNum<1000)
soNum=(int)(Math.random()*10000);
while(judge==false)
{
int[] rubish=new int[4];
rubish[0]=soNum%10;
rubish[1]=soNum%100/10;
rubish[2]=soNum%1000/100;
rubish[3]=soNum/1000;
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
if(rubish[j]==rubish[i])
{
soNum=(int)(Math.random()*10000);
judge1=false;
}
}
}
if(judge1==true)
judge=true;
}
int soNum=(int)(Math.random()*10000);
boolean judge1=true,judge=false;
while(soNum<1000)
soNum=(int)(Math.random()*10000);
while(judge==false)
{
int[] rubish=new int[4];
rubish[0]=soNum%10;
rubish[1]=soNum%100/10;
rubish[2]=soNum%1000/100;
rubish[3]=soNum/1000;
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
if(rubish[j]==rubish[i])
{
soNum=(int)(Math.random()*10000);
judge1=false;
}
}
}
if(judge1==true)
judge=true;
}
解决方案 »
- html div小问题 求解
- vista ie不支持java applet问题(急急急)
- javascript 验证表单??哪个市斤给我看看错误在哪呢?我是新手。主要是邮箱验证这块不懂
- 请教一个看似容易 做起来难的问题 (给个思路就送分!) 麻烦大家了
- 初学Java ,碰到一个不解的问题,请教一下高手,关于classpath
- jdbc连数据库时的url中的“:”是什么意思?
- 刚刚学习java,希望师兄师姐们多多指教。
- july_typhoon进来取分!
- win2K+tomcat4.0+jdk1.4的配置问题!
- 用jbuilder的例子运行时,却提示:Unlicensed copy of JDataStore. Use the License Manager in the JDataStore Explorer to register JDataStore.
- 这个输出为什么是1.0????
- 大雪天裸體跪求
judge=true;这个只是结束了while(judge==false)对这个的循环 而你这个里面你又soNum=(int)(Math.random()*10000);
这样就死循环了
soNum=(int)(Math.random()*10000);
这只是一个循环,和下面没关系,不过从楼上的说法我又发现了另一个错误,呵呵,这样即使下面不是死循环也有可能打出三位数或两位数来
soNum=(int)(Math.random()*10000);
这只是一个循环,和下面没关系,不过从楼上的说法我又发现了另一个错误,呵呵,这样即使下面不是死循环也有可能打出三位数或两位数来
{
for(int j=i+1;j <4;j++)
{
if(rubish[j]==rubish[i])
{
soNum=(int)(Math.random()*10000);
judge1=false;
}
}
} 当得到的四位数有重复的就会执行到上面if语句里面,这时judge1的值变为了false。最后的if语句试图改变judge的值,这时永远都不会执行了,judge始终是false,也就是始终执行while循环了。应该在while循环的开始加上judge1的初始化语句,即judge1 = true;~~~