编译正确 运行错误 应该怎么改

package 程序设计;

public class 彩票 {
public static void main(String[] args) {
int n=Integer.parseInt(args[0]);
for(int i=0;i<n;i++) {
generate();
System.out.println();
}

}

private static void generate() {
    // TODO Auto-generated method stub
    int a[]=new int[7];
    fan:for(int j=0;j<7;j++) {
        a[j]=(int)(Math.random()*35+1);
        int m=a[j];
        if(j>=1) {
            for(int i=0;i<j;i++) {
                if(a[i]==m) {
                    j--;
                    continue fan;
                }
            }
        System.out.println(a[j]+" ");
        }
    }

}

}

这样去重是比较有风险的,假如一直随机到重复的数字,那么运行时间不可控的,可以这样做:

 public static void generate() {
        List<Integer> nums = new ArrayList<>();
        for (int i = 0; i < 36; i++) {
            nums.add(i+1);
        }
        int [] result = new int[7];
        List<Integer> temp = new ArrayList<>(nums);
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            Integer n = temp.get(random.nextInt(35 - i));
            result[i] = n;
            temp.remove(n);
        }
        result[6] = nums.get(new Random().nextInt(15));
        System.out.println(Arrays.toString(result));
    }