java中随即数又不重复的代码 我是这样写的 错在哪了 求指教。。

我的目的是通过while循环把出现重复的随机数重新随机。 就是通过改变i 的值达到目的 可是发现while循环没起到作用。。为什么??重复的数字依旧出现

第1个回答  2013-06-02
while循环油问题,你可以试一试i=r.next(36)-2;这样就不会出现无限循环了追问

本身就没出现无限循环。。而是有重复的数字出现而已 而且按你的方法依旧出现重复的数字。。问题在哪呢??

追答

我晕哟,原来你是这个问题哦,出现重复很正常,但是这种概率很小的,你直接把你的while循环注释点看一看也

追问

哎呀。。。我的while 循环的目的就是要排除掉重复的数字。。我现在想知道的是为什么我的while循环没作用

追答

原来你是这个意思哟,你可以这样写嘛,
while(s.indexOf(i)>=0){
i=r.nextInt(36);

}

第2个回答  2013-06-02
你的while那里根本就不会执行,while那里永远都不会成立。而且你的随机数只是在0(包括)到36(不包括)之间的整数,你说会不会重复。追问

哥哥 你终于说到正点上了.. 我想知道为什么while不会执行 为什么while 永远不会成立。。我把出现过的i 都保存在s里了 那么再出现重复的数字while语句就应该会成立 成立的话就会重新随机。。直到不成立。。再保存在s里 这样下去 。。就不应该出现重复的数字。。可是。。问题出现了。。重复的数字依旧出现。。问题到底在哪呢??难道我保存在s里的数字被抹杀掉了?

第3个回答  2013-06-02
感觉你的代码写的很乱,那个while语句始终是成立的,因为你的s里面永远不会包含“i“这个字符,估计就是你的这个while循环有问题!追问

乱点没什么 主要是我感觉这while语句几乎没起到作用。。你刚才说s里面永远不会包含i 这个字符?为什么?而且你说我的while语句始终是成立的 那就应该是死循环罗 可是执行并没出现死循环

追答

哦,说错了,你那个while是永远都不会执行,因为你的那个变量s始终没包含字符i。

追问

原本你的是对的 但我没看懂 知道下面那兄弟把代码一写出来 我才知道我把i 打上双引号就不再是变量了。。而仅仅只是一个字符了。。满意答案只有一个 谢谢你下,,

第4个回答  2013-06-03
告诉你一个简单的办法,取100以内不重复数字10个:
HashSet<Integer> set=new HashSet<Integer>();
while(set.size()<10){
set.add(new Random().nextInt(100)+1);
}
for(Integer i:set){
System.out.println(i);
}
第5个回答  2013-06-02
while(!(s.indexOf(""+i)==-1))追问

这兄弟高手。。懂了。。擦。。错在这哇

本回答被提问者采纳
相似回答