if и else в Java
До сих пор вы хранили true или false, либо собирали одно true или false из двух других знаками вроде &&. Те страницы всё ещё заканчивались одним значением под именем. Эта страница использует то значение иначе: Java смотрит на true или false и выполняет только одну группу строк. Инструмент этого выбора — if. Другая группа, когда она нужна, — else.
Булево значение решает, какой блок выполнится
Создайте небольшой файл программы с именем Gate.java. public class в первой строке должен совпадать с именем файла: public class Gate. Не оставляйте в этом файле старый класс Mint; компилятор ждёт, что имя класса и имя файла совпадут.
Внутри main перед выбором пути сохраните boolean:
boolean ready = true;
Эта строка ничего не печатает. Она только даёт имени ready слово true. ready начинается с маленькой r. Вокруг true нет кавычек. Точка с запятой заканчивает строку хранения. После этого идёт сам выбор:
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
Слово if пишется маленькими буквами: i, потом f. Это не имя, которое вы придумываете. Пробел после if допустим; if(ready) без пробела тоже компилируется. Внутри скобок стоит имя ready — без кавычек, без ==, без &&. Когда ready хранит true, Java входит в первую пару фигурных скобок и выполняет System.out.println("pass");. Кавычки вокруг pass помечают буквы для экрана. На экране вы должны увидеть одну строку: pass. Блок else в этом запуске полностью пропускается. Сохраните файл перед компиляцией.
Программа, которая печатает pass
Это версия, которую вы компилируете первой.
public class Gate {
public static void main(String[] args) {
boolean ready = true;
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
}
}
Из папки, где лежит Gate.java, выполните javac Gate.java. Когда фигурные скобки и круглые скобки совпадают, javac не пишет ни одной своей строки. Затем выполните java Gate — не java Gate.java. Окончание .java у второй команды уберите. Те же две команды работают и в Windows, и в macOS; эта страница не требует другого написания оболочки ни для одной из систем. Программа должна напечатать pass и остановиться. Она не ждёт, пока вы что-то наберёте. Если терминал ждёт ввода с клавиатуры, в файле ещё остался вызов nextLine из старого упражнения. Удалите этот вызов и оставьте boolean вместе с if / else выше. Из‑за неверной строки на экране новый JDK ставить не нужно.
Почему pass, а не wait? Потому что проверка в скобках была true. В этом запуске Java не печатает само слово true. Она печатает то, что выполняет println внутри выбранных фигурных скобок. Держите в уме три задачи: круглые скобки держат проверку, фигурные скобки группируют строки, которые относятся друг к другу, а println — единственная часть, которая пишет на экран. Если экран показывает true, вы, скорее всего, всё ещё печатаете сам boolean, или в main ещё лежит старое демо со знаками сочетания. Замените ту пишущую строку на println("pass") внутри фигурных скобок if, когда ready равно true.
Когда ready равно false
Измените только сохранённое значение:
boolean ready = false;
Структуру if / else оставьте как есть. Теперь проверка не проходит, поэтому Java пропускает первые фигурные скобки и выполняет скобки else. На экране должна появиться одна строка: wait.
public class Gate {
public static void main(String[] args) {
boolean ready = false;
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
}
}
Скомпилируйте и запустите снова: javac Gate.java, затем java Gate. Вы должны увидеть wait. Заметьте: вы не переписывали строку if и не строку else — изменилось только значение под ready. После того как вы увидели wait, можете вернуть boolean ready = true;, чтобы снова получить первое демо. Обе версии — корректный Java. Они учат одну и ту же форму if / else с противоположными проверками.
Прочитайте запуск с false ещё раз по порядку. ready хранит false. Задаётся if (ready). Ответ — false, поэтому каждая строка между первой { и её парной } пропускается — в том числе println("pass"). Управление продолжается на else. Строки между фигурными скобками else выполняются, поэтому срабатывает println("wait"). На экране одна строка. Второй строки нет. Само слово false не появляется, пока вы специально его не напечатаете.
Правила, которые держат выбор ясным
Круглые скобки вокруг проверки обязательны. Написание if ready { … } без скобок заставляет javac завершиться с ошибкой. Проверка на этой странице — boolean: имя вроде ready, или голые слова true или false без кавычек. if ("true") ставит буквы туда, где должна быть boolean-проверка; javac сообщает об ошибке. Уберите кавычки или продолжайте использовать boolean-имя. Голое целое число вроде if (1) — не способ хранить готовность в этом уроке; оставайтесь с true, false или boolean-именем.
Фигурные скобки важны для чтения урока. Эта страница всегда оборачивает каждый путь в { }. Java допускает однострочный if без фигурных скобок, но как только вы добавите вторую строку под этим if, к проверке останется привязана только первая строка, если скобок нет. Начинающие легко теряют эту деталь. Держите фигурные скобки в обоих демо, чтобы каждый путь был очевиден: одна открывающая скобка после проверки, одна закрывающая перед else, затем ещё одна пара для else.
else принадлежит if. Одинокий else заставляет javac завершиться с ошибкой. На этой странице у одного if один else. Вы можете написать if без else, если вас интересует только путь true; первое учебное демо всё равно показывает обе стороны, чтобы была видна развилка. Выбор среди многих фиксированных значений — это switch на следующей странице; здесь не изобретайте третью ветку ещё одним else.
Проверку можно написать и без отдельного имени: if (true) { … } else { … }. Это компилируется и выполняется. Демо используют ready, чтобы вы видели, как сохранённый boolean ведёт выбор — так выглядят программы после того, как вы уже умеете хранить true и false. Сравнения вроде if (score > 10) относятся к тому моменту, когда вы уже уверенно держите эту развилку true / false; эта страница оставляет проверку boolean-значением, которое вы уже понимаете.
📊 ready и экран
| ready | Экран |
|---|---|
| true | pass |
| false | wait |
Используйте таблицу как проверку после запуска, а не вместо него. true в первом демо печатает pass. false во втором демо печатает wait. Если обе строки println вдруг выполнились, сломаны фигурные скобки или связка if / else — чините структуру, а не переустанавливайте Java.
Частая путаница — печатать сам синтаксис: System.out.println("if (ready)");. Это пишет символы if (ready). Это не выбирает путь. Другая путаница — оставлять в том же main демо с && или == и удивляться, почему экран показывает true вместо pass. main этой сессии должен держать только boolean и if / else.
Что вы можете сделать сейчас
Вы можете сохранить boolean, поставить его в if (…), и дать каждому исходу свой блок в фигурных скобках. Когда проверка true, выполняется один println; когда false — println из else. Следующая страница — switch, где несколько фиксированных значений получают каждый свой case вместо одной развилки true / false.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху