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