一只特立独行的…… 2022-03-03 20:07 采纳率: 93.8%
浏览 27

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

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]+" ");
        }
    }

}

}

  • 写回答

1条回答 默认 最新

  • Dream丶大辉 2022-03-03 22:06
    关注

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

     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));
        } 
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月3日