java小白 随机输出7以内的数字。要求无重复数字 求各位大神看看问题在哪!?

刚开始学java

这是我写的代码

但输出的却还是有重复,求各位大神看看问题在哪!

import java.util.*;
class Ex01
{
public static void main(String args[])
 {
   int a[]=new int[7];
   int i=0;
   Random rd=new Random();
   a[0]=rd.nextInt(7);
   System.out.print(a[0]);
   for(i=1;i<a.length;i++)
   {
     a[i]=rd.nextInt(7);
     for(int j=0;j<i;j++)
      {
         if(a[j]==a[i])  
         i=i-1;
         break;
      }
   }
   for(int k=1;k<i;k++)
      {System.out.print(" "+a[k]);}
 }
}

你是想生成0-7的随机数吗?并且放在数组里面?要求数组里面生成的随机数不重复是吗?

 public static void main(String args[]) {
        Integer a[] = new Integer[7];
        int index = 0;
        Random rd = new Random();
        for (int i = 0; i < a.length; i++) {
            int num = rd.nextInt(7);//生成随机数
            while (true) {
                //判断数组里面是否存在某个值,这里将数组转成list判断
                if (Arrays.asList(a).contains(num)) {
                    //如果存在,就重新生成.
                    num = rd.nextInt(7);
                } else {
                    a[index] = num;
                    index++;
                    break;
                }
            }

        }
        for (int k = 0; k < a.length; k++) {
            System.out.print(" " + a[k]);
        }
    }

 

 public static void main(String args[])
    {
        int a[]=new int[7];
        int i;
        Random rd=new Random();
        for(i=1;i<a.length;i++)
        {
            int i1 = rd.nextInt(7);//赋值的随机数
            a[i] = i1;
            while (true){//死循环 那这个数跟目前的数组里所有数比较
                int num = 0;//为0   就没有重复跳出执行下一次
                for (int j = 0; j < 7; j++) {//循环所有
                    if(a[j]==i1){//如果随机数和某一个位置的数相同
                        num=1;//改变为1  继续执行
                        i1 = i1-1;//随机数减一
                    }
                }
                if(num==0){//没有重复的  跳出  为数组赋值
                    a[i] = i1;
                    break;
                }
            }
        }
        for(int k=1;k<i;k++)
        {System.out.print(" "+a[k]);}
    }

试下吧