Извините, я новичок в Java, поэтому этот вопрос может быть неясным.
Недавно я имел дело с включением оператора try и catch в цикл while, потому что я хотел убедиться, что входные данные включены в остальную часть программы.
Я столкнулся с проблемой, когда использование восклицательного знака (!) Перед переменной в условиях while (например, while (! Done)) вместо использования = false (например, while (done = false)) изменяет как работает моя программа.
Первый (! Done) приводит к операторам try и кроме, выполняющимся, как ожидалось.
Последний (done = false) не делает этого, просто пропуская их и переходя к следующей части кода.
У меня сложилось впечатление, что! перед переменной означало то же самое, что и var = false.
Я ошибаюсь?
Вот пример:
import java.util.Scanner;
public class TestOne {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int num;
boolean inputDone = false;
while (!inputDone) {
try {
System.out.print("Enter in a number here: ");
num = input.nextInt();
inputDone = true;
}
catch (Exception e) {
System.out.println(e);
System.exit(0);
}
}
System.out.println("Success!");
}
}
В настоящее время компиляция и запуск программы будут проходить гладко: она запросит у меня число, введя букву или действительно длинное число, и выведет тип исключения и выйдет. Ввод нормального числа заставляет его печатать Успех!
С другой стороны, если бы я заменил! InputDone на inputDone = false, он просто выводит текст Success! когда я запускаю программу.
Может кто-нибудь объяснить мне разницу между! и = ложные утверждения в цикле while?