Четверг
28.03.2024
20:15


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » Java приложения » Java

Оператор if
Оператор if
if — это оператор условного перехода. Он направляет выполнение программы по двум разным маршрутам. Общая форма оператора if:
if (condition) {statemen1};
else {statement2};
где statementN — одиночный или составной (включенный в фигурные скоб ки, т. е. в блок) оператор маршрута N (N — номер маршрута, для if он ра вен 1 или 2); condition — любое выражение, которое возвращает значение типа boolean. Предложение else — необязательное.
Оператор if работает так: если condition имеет значение true, то выполня ется statemen1, иначе — выполняется statement2 (если он присутствует). Оба оператора вместе не будут выполняться ни в коем случае. Например, рассмотрим следующий фрагмент:
int а, b; ...
if (а < b) а = 0;
else b = 0;
Здесь, если a меньше, чем b, то a устанавливается в нуль, иначе — b устанав ливается в нуль. Обе переменные сразу в нуль никогда не устанавливаются.
Чаще всего для управления оператором if используется выражение, вклю чающее операции отношений. Однако в этом нет технической необходимо сти. Можно управлять оператором if, используя одиночную boolean пере менную, как показано в следующем кодовом фрагменте:
boolean dataAvailable; ...
if (dataAvailable) ProcessData () ; 
else waitForMoreData();
Помните, что только один оператор может появляться сразу после if или else. Если нужно включить в ветви большее количество операторов, то сле дует создать блок, как сделано, например, в следующем фрагменте:
int bytesAvailable; ...
if (bytesAvailable > 0) {
  ProcessData();
bytesAvailable -= n;
  }else waitForMoreData();

Здесь будут выполняться оба оператора в блоке if, если bytesAvailable больше нуля.

Некоторые программисты находят удобным включать фигурные скобки в каждую ветвь оператора if, даже когда там имеется только один оператор. Это облегчает последующее добавление других операторов в ветви if, и не нужно волноваться относительно пропуска фигурных скобок. Действитель но, их пропуск при определении блока, когда они необходимы, — обычная причина ошибок. Например, рассмотрим следующий кодовый фрагмент:
int bytesAvailable; ...
if (bytesAvailable > 0) {
  ProcessData();
  bytesAvailable -= n; 
} Else 
  waitForMoreData();
  bytesAvailable = n;
Кажется ясно, что, судя по уровню отступа, оператор bytesAvailable = n; предназначался для выполнения внутри предложения else. Однако, как вы помните, пробелы незначимы для Java, и у компилятора нет никакого спо соба распознать ваши намерения. Этот код будет скомпилирован без преду преждений, но во время выполнения будет вести себя неправильно. Пред шествующий пример исправляется так:
int bytesAvailable;  ...
if (bytesAvailable > 0) { 
  ProcessData();
  bytesAvailable -= n;
 }else {
  waitForMoreData();
  bytesAvailable = n; 
}
Здесь всего-навсего вставлены пропущенные блочные скобки. 
Вложенные if
Вложенный if — это оператор if, который размещен внутри другого if- или else-оператора. Вложение if — обычный прием в программировании. Когда вы вкладываете if, нужно помнить, что оператор else всегда относится к самому близкому оператору if, который находится в том же блоке, что и else. Например:
if(i == 10) {
  if(j < 20) а = b;
  if(к > 100) с = d; // этот if
  else а = с;          // связан с этим else
}
else а = d;           // этот else относится к if(i == 10)
Как указывают комментарии, заключительный else не связан с if (j < 20), потому что он не в одном с ним блоке (хотя это и самый близкий if без else). Последний else связан с if (i == 10). Внутренний else относится к if (k> 100), потому что это самый близкий if в пределах данного блока.
Многозвенный if-else-if
Общую программную конструкцию, которая основана на последовательно сти вложенных if, называют многозвенным (ladder) if-else-if. Эта конст рукция выглядит примерно так:
if(condxtion1) 
  statement1;
else if (condxtion2)
  statement2; 
else if(condition3) statements3;
.
.
.
else
  statementsN;
Операторы if выполняются сверху вниз. Как только одно из условий, управляющих оператором if, становится true, оператор, связанный с этим if, выполняется, а остальная часть многозвенной схемы пропускается. Если ни одно из условий не true, то будет выполнен последний оператор else. Заключительный else действует как условие по умолчанию: если все другие условные проверки не успешны, то выполняется последний оператор else. Если последний else отсутствует и все другие условия — false, то никакого действия выполняться не будет.
Программа, использующая многозвенный if-else-if для определения вре мени года, в котором находится указанный (в переменной month) месяц:
// Демонстрирует операторы if-else-if. 
package ifelse;

/**
 *
 * @author akarak
 */
public class IfElse {

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    int month = 4; // Апрель
    String season;
    if (month == 12 || month == 1 || month == 2) {
      season = "Зима";
    } else if (month == 3 || month == 4 || month == 5) {
      season = "Весна";
    } else if (month == 6 || month == 7 || month == 8) {
      season = "Лето";
    } else if (month == 9 || month == 10 || month == 11) {
      season = "Осень";
    } else {
      season = "Непонятный месяц";
    }
    System.out.println("Апрель это " + season + ".");
  }
}
Пример вывода этой программой:
Апрель это Весна.
Независимо от того, какое значение вы задаете для переменной month, в многозвенной схеме будет выполняться один и только один оператор при сваивания.

Категория: Java | Добавил: Akarak (06.10.2011)
Просмотров: 9935 | Теги: java, ELSE, If | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
Java [12]
Консольные приложения
Java ООП [2]

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2024
    Используются технологии uCoz