private int[] makeNoRepeat(int length){
int [] sss=new int[length];
// System.out.println("length:"+length);
Random rd=new Random();
int i=0;
int temp;
boolean flag=true;

do{
System.out.println("i:"+i);
temp=rd.nextInt(10);
System.out.println("temp:"+temp);
for(int j=0;j<i;j++){
System.out.println("sss["+j+"]:"+sss[j]);

System.out.println(temp==sss[j]);

if(temp==sss[j]){
flag=false;
break;
}
}
if(flag){
sss[i]=temp;
i++;
}
}while(i<length);

return null;
}
执行后就死循环了  大大们帮忙看下把

解决方案 »

  1.   

    private static int[] makeNoRepeat(int length){
            int [] sss=new int[length];
        //    System.out.println("length:"+length);
            Random rd=new Random();
            int i=0;
            int temp;
            boolean flag=true;
            
            do{
                System.out.println("i:"+i);
                temp=rd.nextInt(10);
                System.out.println("temp:"+temp);
                for(int j=0;j<i;j++){
                    System.out.println("sss["+j+"]:"+sss[j]);
                    
                    System.out.println(temp==sss[j]);
                    
                    if(temp==sss[j]){
                        flag=false;
                        break;
                    }
                }
                if(flag){
                    sss[i]=temp;
                    i++;
                }
                flag=true;
            }while(i<length);
            
            return null;
        }
      

  2.   

    if(flag){
       sss[i]=temp;
       i++;
       }
       flag=true;
     在这个if后面加上一个flag=true;
      

  3.   

    不重复的数组生成,没必要这么去判断重复,既然不重复,肯定是不相等,不相等,就可以按从小到大生先成数据,然后再打乱顺序就可以了
    for exampleint[] a = new int[10];
    a[i] = (int)(Math.random()*100); //生成第一个数据
    for (int i=1; i<a.length; i++) {
        a[i] = a[i-1] + (int)(Math.random()*10) + 1; //从小到大随机生成数据
    }
    for (int i=0; i<a.length; i++) { //打乱顺序
        int idx = (int)(Math.random()*a.length); //随机生成一个位置
        int t = a[idx];
        a[idx] = a[a.length-idx-1]; //交换随机位置和长度-随机位置的两个元素
        a[a.length-idx-1] = t;
    }
      

  4.   

    这没有什么难度把。生成随即数组,可以借助HashSet,先将生成的数添加进hashset,再把hashset转换为数组即可。
      

  5.   

    楼主如果你传递的length参数大于10的话,你的程序还回事死循环啊
      

  6.   

    temp=rd.nextInt(10);
    最好是用length来确定你随机数的范围吧
    temp=rd.nextInt(10 * length + 1)之类的