我正在尝试打印出现在整数数组中的两个最高整数,但是输出始终与前三个一起出现。
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/