假设我有一组10个随机生成的数字。然后这些数字进入列表。如:
int[] fams = new int[4];
System.out.println("Number of families with 2 children: " + fams[0]);
System.out.println("Number of families with 3 children: " + fams[1]);
System.out.println("Number of families with 4 children: " + fams[2]);
System.out.println("Number of families with 5 or more children: " + fams[3]);
然后我必须说:
System.out.println("The most common number of children was " + common + ".");
我尝试了代码
int common = 0;
for(int i = 0; i < fams.length; i++) {
if(common < fams[i]) {
common = fams[i];
但是,这会输出最常见的fam数(显然是这样)。我需要的是最常见的孩子数量。例如,如果2有5个系列(输入为10),我需要数字2作为输出,而不是5.感谢您的帮助!
答案 0 :(得分:4)
您需要跟踪fams
数组中的最高元素和该元素的索引。索引就是你要找的。 p>
int common = 0;
int commonIndex = -1;
for(int i = 0; i < fams.length; i++) {
if(common < fams[i]) {
common = fams[i];
commonIndex = i;
}
}
在循环结束时,commonIndex
将保留您所需的内容。
答案 1 :(得分:0)
int common = fams[0];
for (int i = 1; i < fams.length; i++) {
if (common < fams[i]) {
common = fams[i];
}
}
答案 2 :(得分:0)
如果您不想保留每个数字的计数(例如,在具有不同值的日志的map-reduce方案中),您可以对集合进行排序,然后线性扫描列表。每次值更改时,您都会重置计数器。如果您的计数器达到最大值,则记住数字和索引。