Введение
Java — мощный язык программирования, который широко используется для решения различных задач, от разработки приложений до создания игр и системного программного обеспечения. Одной из ключевых особенностей Java является возможность управлять порядком выполнения команд, что достигается с помощью условий. Они позволяют создавать гибкие, адаптивные программы, реагирующие на различные ситуации. Чаще всего команды выполняются последовательно, друг за другом. Чуть реже (но все еще довольно часто) возникают ситуации, когда нужно изменить последовательный ход выполнения команд программы.
Иногда, в зависимости от некоторых условий, бывает необходимо исполнять один блок команд вместо другого. А когда эти условия меняются, поступать наоборот.
Могу привести пример. В мультике с Алешей поповиче был камень-путеводитель, и на нам было написано:
"Налево пойдешь" - Смерть свою сыщешь
"Направо пойдешь" - Богатство обретешь
"Прямо пойдешь" - Найдешь себе жену
Ну как-то так, что-то ти-по того)
Так вот, тут яркий пример условий с ветвлением, то-есть при условии что он пойдет в одну из сторон, будет что-то выполнено. Как раз то, что я сегодня буду рассказывать в этой статье.
Условный оператор if() логическое "если"
Это наверное самый часто встречаемый условный оператор из всех, в сленге программистов часто проскакивает: "Да там один if написать"
Оператор if в скобках принимает условие и оно всегда верно(true)
if (<условие>) {
команда 1;
команда 2;
...
}
А если нам нужно проверить наоборот, чтобы если мое условие не верно, то выполняем команду1, команду2, ..., то перед условием нужно поставить восклицательный знак
if (!<условие>) {
команда 1;
команда 2;
...
}
Как пример рассмотрим такую задачу
Если хорошая погода, идем гулять
if (<хорая погода>) {
идем гулять
}
Реализация:
public class Main {
public static void main(String[] args) {
boolean pogoda = true;
if (pogoda){ //если хорошая погода
System.out.println("Идем гулять"); //идем гулять
}
}
}
Задача очень проста в исполнение, там всего один if прописать)
Сначала я создал переменную - флаг типа boolean, она принимает либо true, либо false, где true - хорошая погода, а false - плохая. Потом я проверяю,
если погода хорошая, то идем гулять.
В условный оператор if передается true, значит выполняем команду.
Оператор if - else
Если при обычном if у программы есть выбор: “сделать что-то, либо не делать ничего”, то при if-else выбор программы сводится тому, чтобы “сделать либо одно, либо другое”. Вариант “не делать ничего” отпадает.
Вариантов исполнения (или количество ветвей) при таком виде ветвления бывает от двух и более.
Рассмотрим случай, когда варианта два. Тогда управляющая конструкция имеет следующий вид:
if (условие) {
командда1
} else {
команда2
}
Как работает эта конструкция? Очень просто! Так же проверяется условие, если условие правильное, то выполняется команда1, если условие ложно ( else-иначе ), то выполняется команда2.
Пример задачи: "Если на телефоне менее 20% зарядки, то ставим на зарядку
иначе, телефон еще походит"
Решение:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int procent = scanner.nextInt();
if (procent<20){
System.out.println("Ставим телефон на зарядку");
} else {
System.out.println("Еще походит");
}
}
}
В нашей программе мы с помощью сканера мы будет вводить число в терминал, это число будет принимать переменная procent, затем мы проверяем, если процент < 20, то ставим телефон на зарядку, иначе, еще походит
Я ввел число 55, получается наша переменная procent = 55, проверяем,
50 < 20? -нет, выполняем команду2
Казалось бы... все работает как надо, но нет, бывают случаи когда и этого мало, иногда (else) требуется свой (if), в таком случае мы применяем конструкцию:
Оператор if - else -if
Оператор if - else -if применяется в случаях когда одного условия недостаточно для решения задачи
Общая схема:
If (условие1) {
команда1
} else if (условие2) {
команда2
} else {
команда3
}
Пример задачи: "Если на телефоне менее 20% зарядки, то ставим на зарядку
иначе, если на телефоне больше 20% зарядки, но меньше 80%
зарядки, то еще походит,
иначе, телефон заряжен"
Решение:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int procent = scanner.nextInt();
if (procent<20){
System.out.println("Ставим телефон на зарядку");
} else if (procent>20 && procent<80){
System.out.println("Еще походит");
} else {
System.out.println("Телефон заряжен");
}
}
}
В нашу программу мы добавили еще одно условие, теперь программа проверяет чему равен процент, например в первый раз я ввел 44, программа проходит по коду и проверяет, 40<20 - нет, переходит ко второму условию
(40>20 и 40< 80) - да, значит телефон еще походит
Здесь работаем с числом 12, и при первом же условии мы получаем ответ, ставим телефон на зарядку
Если ввести число 81. Проверим первое условие, 81<20 -нет, провверяем второе условие, (81>20 и 81<80) - нет, так как 81 не меньше 80, а нам нужно чтобы выполнялось оба условия, остается последний вариант, который не содержит условия, он выводит текст в случае если ни одно из условий ранее не было выполнено
Оператор switch - case
По сути своей это супер мощный оператор if, который содержит в себе много ветвлений
Простыми словами будет как-то так:
Данный оператор как бы говорит “Так, у нас есть вот такая вот переменная. Смотрите, в случае, если её значение равно `x`, то делаем то-то и то-то, если ее значение равно `y`, то делаем по-другому, а если ничему не равно из вышеперечисленного, просто делаем вот так… ”
Данный оператор обладает следующей структурой.
switch (аргумент) {
case условие1:
команнда1;
break;
case условие2:
команда2;
break;
case условие3:
команда3;
break;
default:
команда которая будет выполнена если не одно условия не будет выполнено
break;
}
Помните я в самом начале рассказывал про ветвления, тогда я привел пример про камень-путеводитель, так давайте реализуем эту задачу.
Пример задачи:"Налево пойдешь" - Смерть свою сыщешь
"Направо пойдешь" - Богатство обретешь
"Прямо пойдешь" - Найдешь себе жену
Решение:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String choice = scanner.nextLine().toLowerCase();
switch (choice) {
case "налево":
System.out.println("Смерть свою сыщешь");
break;
case "прямо":
System.out.println("Найдешь себе жену");
break;
case "направо":
System.out.println("Богатство обретешь");
break;
default:
System.out.println("Пойду назад");
}
scanner.close();
}
}
В нашем коде мы снова с помощью сканера присваиваем переменной (choice) значение через ввод в терминале.
Как же работает сам оператор switch?
Мы передаем нашему оператору переменную choice, он проходит по case
и ищет совпадение, если нашел то выполняет команду из кейса, если так и не найдет то сделает default команду.
НЕ ЗАБУДЬ ПОСЛЕ КОМАНД В CASE НУЖНО ПИСАТЬ BREAK!!!
В данном примере я написал в терминал налево, теперь наша переменная choice = налево
switch принимает нашу переменную и проходит по кейсам, ищет совпадение,
и находит его в первом же кейсе, следовательно выполняет его команду "Смерть свою сыщешь"
В данном примере я написал в терминал прямо, теперь наша переменная choice = прямо
switch принимает нашу переменную и проходит по кейсам, ищет совпадение,
и находит его во втором кейсе, следовательно выполняет его команду "Найдешь себе жену"
В данном примере я написал в терминал направо, теперь наша переменная choice = направо
switch принимает нашу переменную и проходит по кейсам, ищет совпадение,
и находит его в третьем кейсе, следовательно выполняет его команду "Богатство обретешь"
А в последнем примере я просто не решился куда же мне пойти сходить), и Алеша попович по дефолту пошел назад
Метод toLowerCase()
Кстати да, может кто-то заметил, мы еще и использовали метод: toLowerCase()
этот метод переписывает весь текст в нижней регистр, чтобы вдруг не испортить ввод переменной (делает все буквы строчными)
Например :
String s = "Привет";
String s1 = s.toLowerCase();
System.out.println(s1); // выводит "привет"
Подведем итоги:
Пострадавшие, раненные есть?
-Никак нет, таких нет, все целы и здоровы, во время урока никто не пострадал, наоборот, готов драться за место в офисе (ну почти)
В ходе урока мы узнали какие бывают условные операторы, это уже большой шаг в программирование. На следующем уроке мы разберем операторы циклов.
Всем спасибо, до встреч.