首先,如果这个问题的标题有任何错误,我很抱歉。我只是不知道如何把它放在一个问题中。以下代码掷骰子数千次,并显示掷骰子数量的次数。我想打印最大数字的索引而不是元素。
import java.util.Random;
public class apples {
public static void main(String args[]){
Random rand = new Random();
int a[] = new int[7];
for(int i = 1; i<1001; i++){
++a[rand.nextInt(6) + 1];
}
System.out.println("Roll\tTimes");
for(int j=1; j<a.length; j++){
System.out.println(j + "\t\t" + a[j]);
}
int max = a[0];
for (int i : a) {
if (max < i) {
max = i;
}
}
System.out.println("The winning number is " + max);
}
}
编辑:
我想了解如何获取索引,但有更简单的方法吗?
import java.util.Random;
public class apples {
public static void main(String args[]){
Random rand = new Random();
int a[] = new int[7];
int winner = 0;
for(int i = 1; i<1001; i++){
++a[rand.nextInt(6) + 1];
}
System.out.println("Roll\tTimes");
for(int j=1; j<a.length; j++){
System.out.println(j + "\t\t" + a[j]);
}
int max = a[0];
for (int i : a) {
if (max < i) {
max = i;
}
}
for(int j=0; j<a.length; j++){
if(max==a[j]){
winner = j;
}
}
System.out.println("The winning number is " + winner);
}
}
答案 0 :(得分:0)
您必须将foreach
更改为索引for
循环,并跟踪最大数量的索引。
将此部分更改为
int max = a[0];
for (int i : a) {
if (max < i) {
max = i;
}
}
用
更改它 int max = a[0];
int index = 0;
for (int j = 0, aLength = a.length; j < aLength; j++) {
int i = a[j];
if (max < i) {
max = i;
index = j;
}
}
System.out.println("The winning number is " + max);
System.out.println("The winning index is " + index);
这将打印实现滚动的最苛刻的数字。
答案 1 :(得分:0)
如果你使用for-each循环(就像你做的那样),你将无法获得数组的索引(直接),而是需要使用普通的for
循环如下面的代码中带注释:
int max = a[0];
int maxIndex = 0;//take a variable & Initialize to 0th index
for (int i=0; i<a.length;i++) {//normal for loop, not for each
if (max < a[i]) {
max = a[i];
maxIndex = i;//capture the maxIndex
}
}
System.out.println(": maxIndex :"+maxIndex);//print the maxIndex