我试图打印整数数组中两个最高整数的出现次数,但输出始终是前三个。
Integer[] scores = {4,4,4,6,6,4,2,3};
Arrays.sort(scores, Collections.reverseOrder());
int flag = 0;
System.out.println(scores[0]);
int first = scores[0];
for (int i = 1; i < scores.length; i++) {;
if(first == scores[i]) {
System.out.println(scores[i]);
}else {
first = scores[i];
flag++;
System.out.println(scores[i]);
}
if(flag == 2) {
break;
}
}
有更好的方法让它们打印吗?它们当前打印为 6 6 4 4 4 4 3。 正确的输出应该是 6 6 4 4 4 4
最佳答案
问题在于将标志增加到 2 后的 System.out.println(scores[i])
。当这是列表中的第三个数字时,您不应该进行打印。
我已将代码更改/简化为
int flag = 0;
int first = scores[0];
for (int i = 0; i < scores.length; i++) {
if(first != scores[i]) { //Encountering second number
first = scores[i];
flag++;
}
if(flag == 2) { //If already seen three numbers, break
break;
}
System.out.println(scores[i]); //Good to print it
}
将 first
重命名为 number
或其他名称会更直观,因为它可以容纳第一个或第二个数字。
关于java - 如何打印数组中出现的所有最大的两个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144107/