Я изучаю java и столкнулся с проблемой, у меня есть упражнение max/min, и я попробовал приведенный ниже код, для положительных чисел он работает нормально, но когда я пробую отрицательные числа, все становится грязным.
Если вы введете 5, вы получите min = 5 и max = 5, если вы введете 10 после, вы получите min = 5 max = 10, пока все хорошо, но если вы наберете -5, вы получите min = -5 и max = -5, и все становится еще более странным, если вы наберете 7, вы получите min = -5 и max = 7.
Может кто-нибудь объяснить, почему это происходит?
public static void main(String[] args) {
int ctrl;
int min = 0;
int max = 0;
boolean hasNextInt;
Scanner scanner = new Scanner(System.in);
int counter = 0;
while (true) {
System.out.println("Enter your number:");
hasNextInt = scanner.hasNextInt();
if (hasNextInt) {
ctrl = scanner.nextInt();
if (counter == 0) {
min = ctrl;
max = ctrl;
counter ++;
}
if (min>ctrl)
min = ctrl;
if (max<ctrl);
max = ctrl;
System.out.println("Minimum Number entered: " + min);
System.out.println("Maximum Number entered: " + max);
System.out.println("");
scanner.nextLine();
}else {
System.out.println("Invalid Number. Program stop working.");
break;
}
}
scanner.close();
}
if (max<ctrl); точно ничего не делает, а это означает, что следующая строка (max = ctrl;) всегда выполняется.
Уберите ; после if (max<ctrl)




if (max<ctrl);
max = ctrl;
Этот отступ вводит в заблуждение.
Используйте IDE, которая выполняет форматирование кода. То, что вы действительно написали,
if (max<ctrl){}
max = ctrl;
Также избегайте if/else/for и т. д. без {}.
Дубликат: stackoverflow.com/questions/14112515/…