Условные операторы Java

Сегодня я хочу познакомить Вас с условными операторами в Java. Когда Вы хотите управлять ходом Вашей программы и выполнять действие в зависимости от того, какое выражение выполнилось, Вам просто необходимо использовать условные операторы. 

Давайте разберем, что это за оператор. Синтаксис оператора такой:

if (условие истинно) {

выполняем все, что находиться в этих блоках

}

else {

выполняем все что здесь

}

Есть еще такой вид этого оператора:

if (условие истинно) {

выполняем все, что находиться в этих блоках

}

else if (это условие истинно){

выполняем код здесь

}

else {

выполняем все что здесь

}

Вы можете добавлять сколько угодно else if конструкций и проверять любое количество условий. Но когда условий очень много лучше использовать другой оператор: switch — case.

Его синтаксис следующий:

switch (ключ) {
case значение ключа:
выполняем этот код
break;

//сколько угодно блоков case

default:

если значений ключа не оказалось в case блоках — выполняем этот блок кода
break;
}

На примерах все станет ясней.

Давайте создадим класс ConditionalOperators и попробуем потренироваться писать условные операторы. Если Вы не знаете, как создать класс, то советую почитать статью: Первая программа на Java.

Нашей первой задачей будет проверить переменную на знак: больше 0, меньше 0, или равно 0.

Код   
  1. public class ConditionalOperators {
  2.  
  3.     public static void main(String[] args) {
  4.         //допустим у нас есть переменная variable
  5.         //которая по умолчанию равна 5
  6.         int variable = 5;
  7.         //мы прибавляем к ней число и хотим узнать:
  8.         //стала эта переменная больше 0, меньше 0 или 0
  9.         //думаю задача понятна
  10.         variable = variable + 3;//очевидно, что переменная станет больше 0
  11.         //давайте это проверим
  12.         if (variable > 0) {
  13.             System.out.println("Переменная больше 0");
  14.         }
  15.         else if (variable < 0) {
  16.             System.out.println("Переменная меньше 0");
  17.         }
  18.         else {
  19.             System.out.println("Переменная равна 0");
  20.         }
  21.     }
  22.  
  23. }

Я предлагаю Вам самим запустить этот код и попробовать поменять значение на которое прибавляется переменная на -3 и -5. Вы уведите, что наша программа отлично работает.

А что если нам нужно проверять не одно условие а несколько условий одновременно? Это не проблема. В Java есть операторы, которые позволяют нам проверить одновременно несколько условий: &&, ||. Эти непонятные значки соответствуют выражениям (и, или).

Вернемся к предыдущей задаче. Если допустим нас попросили проверить 2 переменные. Вот как мы это будем делать.

Код   
  1. public class ConditionalOperators {
  2.  
  3.     public static void main(String[] args) {
  4.         //у нас есть прежняя переменная variable
  5.         //которая по умолчанию равна 5
  6.         int variable = 5;
  7.         //и есть переменная variable2 которая = 4.3
  8.         double variable2 = 4.3;
  9.  
  10.         variable = variable + 3;
  11.         variable2 = variable2 - 6;
  12.        
  13.         if (variable > 0 && variable2 > 0) {
  14.             System.out.println("Переменные больше 0");
  15.         }
  16.         else if (variable < 0 && variable2 < 0) {
  17.             System.out.println("Переменные меньше 0");
  18.         }
  19.         else {
  20.             System.out.println("Нужно больше проверок");
  21.         }
  22.     }
  23.  
  24. }

Если Вы запустите данный код, то увидите последнее сообщение о том, что нужно больше проверок. Это потому, что наши переменные имеют разные знаки. Предлагаю Вам дописать это приложение, чтобы проверить все возможные варианты. Вы уже догадались, что знак && проверяет на истинность  два выражение и результатом будет true если только два выражения будут true (верны). Давайте посмотрим все варианты проверок: 

Код   
  1. //Выражение и
  2.         System.out.println(true&&true);
  3.         System.out.println(true&&false);
  4.         System.out.println(false&&false);
  5.         System.out.println(false&&true);
  6.        
  7.         //Выражение или
  8.         System.out.println(true||true);
  9.         System.out.println(true||false);
  10.         System.out.println(false||false);
  11.         System.out.println(false||true);

Результат:

true
false
false
false
true
true
false
true

В некоторых источниках и тестах в будущем Вы можете увидеть вот такую запись этих операторов: &, |. Что это означает? Разница между парными значками и непарными в том, что непарные проверяют два выражения, даже если исход известен, а парные проверяют при надобности только первое выражение. Например false&&false. В этом выражении можно не проверять вторую часть, так как исход всегда будет ложь если в выражении «и» присутствует ложь. «Мы пойдем гулять если будет светло и хорошее настроение.» Если на улице не светло, то проверять есть ли хорошее настроение просто нет смысла. Вот так и в программе. Операторы && и || проверяют только одно выражение при надобность, в то время как & |  проверяют все два в независимости от исхода.

Теперь настало время попрактиковаться с switch-case оператором. Для неопытных и начинающих программистов он может показаться немного сложным и запутанным, по сравнению с if-else. Но это на первый взгляд. Со временем, Вы научитесь им пользоваться в совершенстве. Он, по правде сказать, используется не так часто, как if-else, но бывают ситуации, когда этот оператор очень полезен.

Возьмем все тот же класс ConditionalOperators и допишем в методе мейн пример switch-case. Допустим, нам надо выводить день недели в зависимости от числа, которое поступает на вход. Вот как можно это организовать с помощью  switch-case оператора. 

Код   
  1. int variable = 2;
  2.         switch (variable) {
  3.         case 1:
  4.             System.out.println("Понедельник");
  5.             break;
  6.         case 2:
  7.             System.out.println("Вторник");
  8.             break;
  9.         case 3:
  10.             System.out.println("Среда");
  11.             break;
  12.         case 4:
  13.             System.out.println("Четверг");
  14.             break;
  15.         case 5:
  16.             System.out.println("Пятница");
  17.             break;
  18.         case 6:
  19.             System.out.println("Суббота");
  20.             break;
  21.         case 7:
  22.             System.out.println("Воскресенье");
  23.             break;
  24.         default: System.out.println("Неверное число");
  25.             break;
  26.         }

 

Ответ будет: Вторник.

Так как у нас переменной задано значение 2, которое отвечает выражению вывести вторник. Пока мы не добрались до потоков ввода-вывода, то не сможем вводить с консоли и делать нашу программу интересной. НО. Давайте я просто покажу часть кода, с помощью которой можно будет вводить с консоли (как я это сделал с выводом) и можно будет не хардкодить наши переменные, а вводить с консоли. Так программировать будет интересней и базовые понятия будут не так скучны.

Для ввода с консоли можно использовать класс Scanner. Вот наша программа, но уже с дополнениями:

Код   
  1. System.out.println("Введите число");
  2.        
  3.         Scanner scanner = new Scanner(System.in);//пример кода ввода с консоли
  4.         int variable = scanner.nextInt();//мы дойдем до этого постепенно и тогда будет понятно, как это работает
  5.        
  6.        
  7.         switch (variable) {
  8.         case 1:
  9.             System.out.println("Понедельник");
  10.             break;
  11.         case 2:
  12.             System.out.println("Вторник");
  13.             break;
  14.         case 3:
  15.             System.out.println("Среда");
  16.             break;
  17.         case 4:
  18.             System.out.println("Четверг");
  19.             break;
  20.         case 5:
  21.             System.out.println("Пятница");
  22.             break;
  23.         case 6:
  24.             System.out.println("Суббота");
  25.             break;
  26.         case 7:
  27.             System.out.println("Воскресенье");
  28.             break;
  29.         default: System.out.println("Неверное число");
  30.             break;
  31.         }

 

условные операторы

На первый взгляд, код кажется сложным и запутанным, но со временем Вы будете понимать суть классов и методов и программы будут выглядеть понятнее.

Я забыл упомянуть о  тернарном операторе. Это сокращенная форма записи if-else.

Вот его синтаксис: Выражение1 ? Выражение2 : ВыражениеЗ. Сейчас поясню. В качестве первого операнда — «выражение 1» — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть «выражение2». Если же первый операнд равен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип void.

Если стало еще не понятней — это нормально)). Сейчас покажу на примере.

Код   
  1. int sum = 3+4;
  2.        
  3.         boolean result = (sum>=0)?true:false;
  4.         //читается как: если сумма больше или равно 0 тогда переменной result
  5.         //присвоить значение true; иначе присвоить значение false
  6.         System.out.println(result);

Вставьте код в свою программу и попробуйте поменять значение суммы на отрицательное. Проще говоря: это выглядит так же как: 

Код   
  1. if (sum>=0){
  2. result = true;
  3. }
  4. else {
  5. result = false;
  6. }

 

На этом, пожалуй, и закончим данную статью. Надеюсь Вы освоили основы условных операторов с примерами, а если нет, то попробуйте пройтись по примерам еще раз. Со временем изучения, условные операторы будут использоваться Вами незаметно и без труда.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *