Вы звоните maxNum(auxArray);
несколько раз. Каждый из них печатает максимальное значение.
Следовательно, вы получили несколько результатов.
Чтобы немедленно решить проблему, удалите отпечаток System.out.println(aux);
в вашей функции.
И сделайте только одну функцию печати прямо перед возвратом
System.out.println(valorMax2);
return valorMax2;
Но ваш код выглядит не очень хорошо. Нужно многократное улучшение.
Чтобы найти второе по величине число, вам нужно выполнить цикл только один раз так:
public static int secondMax(int[] array) {
int max = Integer.MIN_VALUE; // Max value
int secondMax = Integer.MIN_VALUE; // Second max value, its our result
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
secondMax = max;
max = array[i];
} else if (array[i] > secondMax) {
secondMax = array[i];
}
}
return secondMax;
}
Это выглядит нормально, но не может быть расширен для поиска n-го максимального числа, потому что наши условия будут очень сложными. Затем вы пытаетесь найти максимальное количество раз за раз:
// Return max number in array which is lower than ceilValue
// Return Integer.MIN_VALUE if no such value found
public static int maxValueBelow(int[] array, int ceilValue) {
int max = Integer.MIN_VALUE;
for (int i = 0; i<array.length; i++) {
if (array[i] < ceilValue && array[i] > max) {
max = array[i];
}
}
return max;
}
public static int findNthValue(int[] array) {
int maxValue = maxValueBelow(array, Integer.MAX_VALUE);
int secondMaxValue = maxValueBelow(array, maxValue);
int thirdMaxValue = maxValueBelow(array, secondMaxValue);
// You can improve this function by give it's a second parameter `n`, and use for loop to find the `n-th` max value.
}