Java:格式元素和计数2D数组中的重复元素的数量

  • 本文关键字:元素 数组 Java 2D 格式 java arrays
  • 更新时间 :
  • 英文 :


我正在尝试确定数组中使用0-999之间的每个数字多少次。我也想格式化元素,以使其始终是3位数字。而不是" 21",它将是'021','5'将是'005'。Netbeans说的是使用增强的循环代替(int x = 0; x

public static void main(String[] args) {
    //Creator of random number 0-999
    Random creator = new Random(999);
    int lotto[][] = new int[1000][2];
    int count = 0;
    for(int x=0;x<lotto.length; x++){
        for(int y = 0; y < lotto[x].length; y++){
            //Fills element with random number
            lotto[x][y] = creator.nextInt(999);
        }
    }
    //Place holder to print out array
    for(int[] a: lotto){
        System.out.println(Arrays.toString(a));
    }
}

}

编辑:我尝试了这个

for(int x=0;x<lotto.length; x++){
        for(int y = 0; y < lotto[x].length; y++){
            //Fills element with random number
            ++lotto[creator.nextInt(999)][creator.nextInt(999)];
        }
    }
 for(int j=0; j < lotto.length;j++){
        System.out.println(j +""+ lotto[j]);
 }

,但是现在该程序不运行。我认为 乐透要计算使用该元素多少次。

编辑2:

 List<Integer> list = new ArrayList<>();
    for(int x=0;x<lotto.length;x++){
        for(int y=0; y<lotto[x].length; y++){
            list.add(lotto[x][y]);
        }
    }
    for(int x=0; x<1000; x++){
        if(list.contains(x)){
            int index = 0;
            int countList = 0;
            while(index!= -1){
                countList++;
                list.remove(index);
                index = list.indexOf(x);
            }
            System.out.println(x +" Hit "+ countList + "time(s)");
        }
    }

阵列打印出来时,列表在列表中打印出的内容少了1个数组中发现的元素的数量。

更新:由于某种原因,现在以下来源要计算列表,该数字与用户输入为的次数的数量不符合。IE:用户输入200,它计数200次使用了两次,但列表仅在

中找到它。
for(int x=0;x<lotto.length;x++){
        for(int y = 0; y < lotto[x].length; y++){
            if(lotto[x][y]== lottery)
                count++;
        }
    }

好的,因此,如果我正确理解了这一点,则需要一个带有1000行和2列的2D数组。您将一个随机数分配到每个列中,因此2000个值在0-999的范围内。似乎您已经在做正确的部分,但是您仍然需要计算每个数字发生多少(0-999)?

如果是这样,您应该创建第二个数组IE:int[] countOccurences = new int[1000],然后在将随机int放入2D数组中的for循环中,您需要将其更改为int tmp = creator.nextInt(999)并以相同的方式将其分配给2D数组做countOccurences[tmp]+=1。例如,如果INT 47发生了两次,则计数[47]等于2。

您可以将2D数组加载到1D列表中,以计算每个数字的发生在0到999之间。因此,您将受益于ArrayList的方法。计数的代码:

    int occurences[] = new int[1000];
    int max = 0;
    for(int x=0; x<1000; x++){
        if (liste.contains(x)) {
            int index = liste.indexOf(x);
            int count = 0;
            while(index != -1){
                count++;
                liste.remove(index);
                index = liste.indexOf(x);
            }
            occurences[x] = count;
            if (count >= max) max = count;
        }
        else  occurences[x] = 0;
    }
    for (int i = 0; i < occurences.length; i++){
        if (occurences[i] == max)
        System.out.println("valeur " + i + " --> " + max);
    }

相关内容

  • 没有找到相关文章

最新更新