Главная » Java » if … else Java

0

Наиболее распространенной формой управляющих структур, служащих для изменения порядка вычислений в зависимости от значения логического выражения, является конструкция if … else, синтаксис которой выглядит следующим образом:

if (БулевоВыражение)

Инструкция1

else

Инструкция2

Сначала осуществляется проверка значения булева выражения. Если результат равен true, выполняется Инструкция1, в противном случае (и при наличии необязательного предложения else) – Инструкция2.

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

public void setproperty(String keyword, double value) throws

UnknownProperty

{

            if (keyword.equals("charm"))

 

charm(value);

else if (keyword.еquаls("strange")) stгаngе(vаluе);

else

throw new UnknownProperty(keyword);

}

А что произойдет, если некоторые из вложенных конструкций if не содержат предложений else? Рассмотрим следующий пример:

public double sumpositive(double[] values) {

// суммирование положительных элементов массива

double sum = 0.0;

if (values.length > 1)

for (int i = о; i < values.length; i++) if (values[i] > о)

sum += values[i];

else // ой!

sum = values[0];

return sum;

}

Предложение else, как может показаться, относится к внешнему выражению if, в условии которого проверяется длина массива, но это только "оптический обман", вызванный наличием в тексте соответствующих отступов, – стоит напомнить, что любые признаки форматирования, используемые при наборе кода, служат только для удобства его восприятия и при компиляции игнорируются. Предложение else трактуется компилятором как принадлежащее ближайшему выражению if, Т.е. следующим образом:

public double sumpositive(double[] values) { double sum = 0.0;

if (values.length > 1)

for (int i = о; i < values.length; i++) if (values[i] > 0)

sum += values[i];

else // ой!

sum = values[0];

return sum;

}

Достаточно внимательно присмотреться, и вы поймете, что этот вариант совершенно не соответствует назначению метода. Чтобы "привязать" else к внешней конструкции if, следует расставить фигурные скобки, определяя блок:

public double sumpositive(double[] values) { double sum = 0.0;

if (values.length > 1) {

for (int i = о; i < values.length; i++)

if (values[i] > 0)

sum += values[i];

} else {

sum = values[0];

}

return sum;

}

Упражнение 7.1. Используя конструкцию if … else внутри цикла, напишите текст метода, который принимает в качестве аргумента строку и возвращает ее, заменяя все специальные символы соответствующими аналогами, пере численными в разделе 6.2.3 на странице 161. Например, символ " внутри исходной строки должен быть заменен парой символов \".

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии