java - 如何打印数组中所有出现的最大两个整数?

原文 标签 java arrays sorting find-occurrences

我正在尝试打印出现在整数数组中的两个最高整数,但是输出始终与前三个一起出现。

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/

相关文章:

java - 如何提高 FinalizerThread 的优先级以在 GC 中收集对象

c# - C# 和 VB.Net 中数组的起始索引

linux - 按ID对Unix文件排序

java - 通过引用调用的行为不符合预期

Java 8 : vertical slicing an array of Lists

javascript - 如何合并JavaScript数组中的某些项目?

java - 在android中排序列表?

java - 如何对链表进行排序?

java - 原因:org.hibernate.boot.registry.classloading.spi.ClassLoadingException:无法加载类[Employee]

使用嵌套循环的 2 个 int 数组的 Java Union 数组