public void b(){
Set set=new TreeSet();//不能换成HashSet 因为其不能提供升序遍历
while(set.size()<7){//产生7个不重复的随机整数
set.add(new Integer((int)Math.random()*35+2).toString());
System.out.println("size大小:"+set.size());
System.out.println("set的组合: "+set);
}
System.out.println(set);//toString方法按照元素顺序按一定的格式输出
}
加break没用吧,这个是因为产生的那个随机数一直都是2,而Set要求的值是唯一的,所以肯定死循环
你没有brake 跳出循环
(int)Math.random()*35 你应该先*35 再转int 顺序错了
@Test
public void test() {
Set set=new TreeSet();
while(set.size()<7){//产生7个不重复的随机整数
set.add((int)(Math.random()*35+2));
System.out.println("size大小:"+set.size());
System.out.println("set的组合: "+set);
}
System.out.println(set);//toString方法按照元素顺序按一定的格式输出
}
}
int放错位置了,先*35,再转int
b r e a k ?????????????????
代码中强转的是Math.random() 而这个方法生成的随机数的范围又是[0,1) 所以值一直是2 set要求唯一 所以一直陷入死循环
set.add(new Integer((int)Math.random()*35+2).toString()); 這个是你自己写得!
** set.add(new Integer((int)(Math.random()*35+2)).toString()); 应该是这样写!**
错误得原因是 Math.random()产生得随机数是[0,1) 而你再前面把他强转为(int) 类型 , 所以 导致(int)Math.random()一直为0,最终(int)Math.random()*35+2)就等于0*35+2最终产生得随机数一直都是为2 因为是Set集合 不能存在重复得元素 所以集合大小一直都是为1 這个就是你死循环得原因