28 апр. 2015 г.

Оператор if/else

Оператор if является основным оператором управления, который позволяет Java принимать решения или, точнее, выполнять операторы по условию. Оператор if содержит выражение и оператор. Если выражение равно true, то интерпретатор выполняет данный оператор. Однако если выражение равно false, то оператор пропускается. Выражение всегда должно возвращать тип boolean. Например:

if ( username == null) // Если имя пользователя равно null, то
    
username = "John Doe"; // определить его

Согласно синтаксису оператора if, выражение необходимо заключать в круглые скобки, хотя они и кажутся избыточными.

Как уже упоминалось, группа операторов, заключенная в фигурные скобки, сама является оператором, поэтому можно записать такой оператор if:

if (( address == null) || ( address.equals(""))) {
      address = "[undefined]";
     
System.out.println("WARNING: адрес не указан.");
}

Оператор if может содержать необязательное ключевое слово else, за которым следует второй операнд. При записи оператора в таком виде вычисляется выражение, а затем, если результат равен true, выполняется первый оператор. Иначе выполняется второй оператор. Например:

if ( username != null) System.out.println("Привет " + username);
  
else {
     
username = askQuestion("Как тебя зовут?");
     
System.out.println("Привет " + username + ". Welcome!");
  
}

При использовании вложенных операторов if/else необходимо убедиться в том, что оператору else соответствует подходящий оператор if. Рассмотрим следующие строки:

if ( i == j)
 
if ( j == k) System.out.println("i равно k");
else
 
System.out.println("i не равно j"); // ОШИБКА!!

В этом примере внутренний оператор if образует единый оператор, выполнение которого зависит от внешнего оператора if. К сожалению, не ясно (если связи не определяются отступами), к какому оператору if относится данный оператор else. В представленном примере отступы сбивают с толку. Согласно правилу, такой оператор else связан с ближайшим к нему оператором if. С правильно установленным отступом этот код выглядит следующим образом:

if ( i == j)
 
if ( j == k) System.out.println("i равно k");
     else
  
System.out.println("i не равно j"); // ОШИБКА!!

Это допустимый код, но он явно отличается от кода, который хотел записать программист. При работе с операторами if лучше использовать фигурные скобки. Это облегчит чтение кода. Лучше писать код таким образом:

if (i == j) {
  
if (j == k)
      
System.out.println("i равно k");
} else {
  
System.out.println("i не равно j");
}

Оператор else if

Оператор if/else используют при проверке состояния и при выборе одного из двух операторов или блоков программы. Но что делать, если нужно выбирать из нескольких блоков? В таком случае обычно применяется оператор else if, который на самом деле является идиоматическим вариантом стандартного оператора if/else, а не новой синтаксической конструкцией. Он выглядит так:

if ( n == 1) {
  
// Выполнить блок кода №1
}
else if ( n == 2) {
 
// Выполнить блок кода №2
}
else if ( n == 3) {
 
// Выполнить блок кода №3
}
else {
 
// Если ни одно условие не выполнилось, выполнить блок №4
}

Но вообще, в большинстве случаев, для такой конструкции лучше использовать оператор switch, который мы рассмотрим в следующем посте. А пока не большой пример:

if01

И несколько вариантов вывода этой программы на консоль:

if02

Так же, я думаю, тут еще разок стоит упомянуть об операторе ?: одним слайдом:

if03

Мы его рассматривали тут.

Комментариев нет:

Отправить комментарий