while不停得循环,size大小一直是1

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 這个就是你死循环得原因