java - java中最大和第二大的数从整数数组中获得相同的值?

标签 java arrays sorting

这里我编写了代码来打印数组中的最大和第二大数字。但是当我在数组中出现两次最大数字时,它会打印相同的最大和第二大数字。任何人都可以告诉我我在哪里做错了。这是我的代码。

int arr[] = {96, 1, 23, 47, 81, 92, 52, 48, 56, 66, 65, 96, 81, 6};
    int largest = arr[0];
    int secondLargest = arr[0];
    // check the condition
    for (int i = 0; i < arr.length; i++) {
        // this condition check for largest number
        if (arr[i] > largest) {
            secondLargest = largest;
            largest = arr[i];

        } else if (arr[i] > secondLargest) {
            secondLargest = arr[i];

        }
    }
    // print the result
    System.out.println("second largest number is:" + secondLargest);
    System.out.println("largest number is:" + largest);

输出如下:

second largest number is:96
largest number is:96

最佳答案

有 2 个问题:

1)初始化最大和第二大(使用Integer.MIN_VALUE);您在第一次迭代时设置第二大数字,它是数组中最大的数字

2)设置secondLargest的条件;你还应该检查: arr[i] <最大

    int arr[] = {96, 1, 23, 47, 81, 92, 52, 48, 56, 66, 65, 96, 81, 6};
    int largest = Integer.MIN_VALUE;
    int secondLargest = Integer.MIN_VALUE;
    // check the condition
    for (int i = 0; i < arr.length; i++) {
        // this condition check for largest number
        if (arr[i] > largest) {
            secondLargest = largest;
            largest = arr[i];
        } else if (arr[i] > secondLargest && arr[i] < largest) {
            secondLargest = arr[i];
        }
    }

输出:

second largest number is:92
largest number is:96

关于java - java中最大和第二大的数从整数数组中获得相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28067109/

相关文章:

c - Mergesort - 段错误

java - Spring Bean @Autowired 和@Qauilifier 名称在我的情况下不起作用。任何人都可以帮助我提供确切的工作示例

javascript - 返回包含每个对象的命名属性的数组

Javascript - 排序字母然后数字

arrays - 将列末尾的元素与下一行开头的元素相加

python - python中向量数组的范数

python - 在 Python 中对多维列表进行深度排序的最有效/最干净的方法是什么?

java - 如何在不通过java中的 super 构造函数设置的情况下将消息设置为自定义异常类

java - 在 Tomcat 上部署期间未加载 RestEasy-Links : javax. el-3.0.0.jar

Java:如果在特定时间内未调用方法,则引发事件