#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
.