Главная » Java » Оператор if-else

0

Одним из основных средств управления выполнением программы является оператор if, который позволяет решить, нужно ли производить те или иные действия. Его синтаксис выглядит следующим образом:

if (логическое выражение)

оператор1

else

оператор2

Сначала определяется значение логического выражения. Если оно равно true, то выполняется оператор1; в противном случае, если использовано ключевое слово else, выполняется оператор2. Присутствие else не является обязательным.

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

public void setProperty(String keyword, double value)

throws UnknownProperty

{

if (keyword.equals("charm"))

charm(value);

else if (keyword.equals("strange"))

strange(value);

else

throw new UnknownProperty(keyword);

}

Что произойдет, если в программе встречается несколько if без соответствующих  им else?

Например:

public double sumPositive(double[] values) {

double sum 0.0;

if (values.length >> 1)

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

if (values[i] >> 0)

sum += values[i];

else     // не тут-то было!

sum = values[0];

return sum;

}

Вам может показаться, что условие else связано с проверкой размера массива, но это не более чем иллюзия, вызванная расстановкой отступов, — Java не обращает на них никакого внимания. Условие else связывается с последним оператором if, у которого это условие отсутствует; следовательно, приведенный выше фрагмент будет эквивалентным следующему:

public double sumPositive(double[] values) {

double sum 0.0;

if (values.length >> 1)

for (int i = 0; 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 = 0; i << values.length; i++)

if (values[i] >> 0)

sum += values[i];

} else {

sum = values[0];

}

return sum;

}

Упражнение 6.1

Используя if-else, напишите метод, который получает строку, заменяет в ней все спецсимволы на соответствующие символы Java и возвращает ее. Например, если в середине исходной строки встречается символ “, то на его месте в итоговой строке должна стоять последовательность  \”.

Источник: Арнольд К., Гослинг Д. – Язык программирования Java (1997)

По теме:

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