Нахождение второго по величине числа заданных целых чисел без использования массива - PullRequest
0 голосов
/ 21 октября 2019

Используя циклы if, мне поручено сложить самые большие & 2-е по величине целые числа в пару, а также самые маленькие & 2-е по величине целые числа в паре из предоставленных пользователем чисел.

Я пробовал несколько разных, еслиусловия, и хотя моя программа может правильно найти 2-е наименьшее целое число, если я применяю ту же логику (с перевернутыми знаками больше / меньше), я не получаю правильный ответ.

           numN = keyboard.nextInt();
           if (numN > numL1){
              numL1 = numN;
           }

           if (numN < numS1){
              numS1 = numN; 
           }
           else if (numN < numS2 && numS2 > numS1){
              numS2 = numN;
           }
           else if (numN > numL2 && numL2 < numL1){
              numL2 = numN;
           }

Если пользователь вводит четыре числа 1,2,3,4

Фактические результаты: самые большие и самые маленькие пары: (4,4) (1,2)

Необходимые результаты: самые большие и самые маленькие пары: (4,3) (1,2)

1 Ответ

0 голосов
/ 21 октября 2019

вы можете сделать это, как показано ниже:

int max = Integer.MIN_VALUE, secondMax = Integer.MIN_VALUE, min = Integer.MAX_VALUE, secondMin = Integer.MAX_VALUE;

    int input = keyboard.nextInt();
    if (input > max) {
        secondMax = max;
        max = input;
    } else if (input > secondMax) {
        secondMax = input;
    }
    if (input < min) {
        secondMin = min;
        min = input;
    } else if (input < secondMin) {
        secondMin = input;
    }
...