我正在尝试确定数组中使用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);
}