到目前为止,这里是我的代码:

 public void lottoGame() {
      HashSet<Integer> dups = new HashSet<Integer>();

      for(int howMany = 1; howMany <= 6; howMany++) {
           int lottoNumber = lottoNum.nextInt(49) + 1;

           while(dups.contains(lottoNumber)) {
                lottoNumber = lottoNum.nextInt(49) + 1;
           }

           dups.add(lottoNumber);
           randomLotto[howMany] = lottoNumber;

           System.out.println(lottoNumber);

    }
    for(int counter : dups) {
        numberCount[counter]++; //to store the counting of random numbers
    }

    for(int counting = 1; counting < numberCount.length; counting++) {
        System.out.println(counting + " occurs " + numberCount[counting] + " times");
    }
}


所以基本上,我要做的是创建一个哈希集并放入6个随机数。在我的最后两个for循环中,我试图计算我绘制该数字并打印出来的频率。问题是,无论出于何种原因,打印时都从第三个字段开始。有人知道为什么吗?

最佳答案

我建议使用地图,在这里看这个例子要简单得多

  public static void lotoGame() {
    Random rand = new Random();
    Map<Integer, Integer> loto = new HashMap<>();
    while (loto.keySet().size() < 6) {
        int lottoNumber = rand.nextInt(49) + 1;
        loto.compute(lottoNumber, (key, value) -> value == null ? 1 : ++value);
    }

    loto.forEach((key,value)->{
        System.out.println(key + " occurs " + value + " times");
    });
}

07-24 09:37
查看更多