Напишите программу на Java, которая находит второй минимум абсолютных значений трех чисел

#java #integer #minimum

Вопрос:

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

     int num1, num2, num3, minVal, secondMinVal;
    System.out.print("Ener three integer numbers: ");
    num1 = input.nextInt();
    num2 = input.nextInt();
    num3 = input.nextInt();

    minVal = num1;
    if (num2 < num1 amp;amp; num2 < num3)
        num2 = minVal;
    else if (num3 < num1 amp;amp; num3 < num2)
        num3 = minVal;
    System.out.println("The minimum of the absolute values of the entered numbers is "   Math.abs(minVal));

    secondMinVal = num1;
    if (num2 > num1 amp;amp; num2 < num3)
        num2 = secondMinVal;
    else if (num3 > num1 amp;amp; num3 < num2)
        num3 = secondMinVal;
    System.out.println("The second minimum value is "   secondMinVal);
 

Я пытаюсь запустить с 7, -3 и 10, и результат будет выглядеть так:

 Ener three integer numbers: 3 -1 10
The minimum of the absolute values of the entered numbers is 3
The second minimum value is 3
 

Комментарии:

1. num2 = minVal это не то же самое , что minVal = num2 так что вы никогда не обновляетесь minVal , то же самое для secondMinVal

Ответ №1:

Чтобы присвоить новое значение переменной «minVal» вместо

 num2 = minVal;
 

вы должны использовать

 minVal = num2;
 

Значение переменной, расположенной справа от оператора присваивания»=», присваивается переменной слева от оператора присваивания (для целочисленных переменных).

Эта логика применима к любым целочисленным переменным (например, «secondMinVal»).

Ответ №2:

     int num1, num2, num3, minVal, secondMinVal;
    System.out.print("Ener three integer numbers: ");
    num1 = input.nextInt();
    num2 = input.nextInt();
    num3 = input.nextInt();

    if(num1 < num2 amp;amp; num1 < num3)
        minVal = num1;
    else if (num2 < num3)
        minVal = num2;
    else
        minVal = num3;
    System.out.println("The minimum of the absolute values of the entered numbers is "   Math.abs(minVal));

    secondMinVal = num1;
    if (num2 > num1 amp;amp; num2 < num3)
        num2 = secondMinVal;
    else if (num3 > num1 amp;amp; num3 < num2)
        num3 = secondMinVal;
    System.out.println("The second minimum value is "   secondMinVal);
 

Я думаю, что просто отвечу на свой вопрос, ха-ха-ха, надеюсь, это кому-нибудь поможет.

Комментарии:

1. Лучше. Тебя все еще там нет. Когда я ввожу 2, 5 и 7, вывод будет The minimum of the absolute values of the entered numbers is 2 The second minimum value is 2 .