一只特立独行的…… 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日

悬赏问题

  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC
  • ¥15 防火墙的混合模式配置