Оператор switch

обчислює целочисленное вираз і у відповідності з отриманим результатом шукає мітку case в блоці Якщо збігається мітка знайдена, то управління передається першому оператору, наступному за нею Якщо позначка не виявлена, то наступним буде виконуватися оператор, що знаходиться за міткою default Якщо мітка default відсутня, то весь блок оператора switch пропускається

Наведений нижче приклад виводить інформацію про стан обєкта При цьому рівень деталізації вибирається користувачем Потім проводиться висновок більш скупих даних:

public static final int TERSE = 0, NORMAL = 1, BLATHERING = 2

// ..

public int Verbosity = TERSE

public void dumpState()

throws UnexpectedStateException

{

switch (Verbosity) {

case BLATHERING: Systemoutprintln(stateDetails) Systemoutprintln(stateDetails)

/ / ПРОХІД

case NORMAL: Systemoutprintln(basicState)

/ / ПРОХІД

case TERSE: Systemoutprintln(summaryState) break

default:

throw new UnexpectedStateException(Verbosity)

}

}

У класі визначено декілька констант, що відповідають різним рівням деталізації Коли настає час вивести стан обєкта, це робиться на потрібному рівні деталізації

Коментар ПРОХІД означає, що програма проходить через відповідну мітку, а виконання продовжується з наступного за нею оператора Отже, якщо рівень деталізації дорівнює BLATHERING, то друкуються всі три складові частини звіту якщо він дорівнює NORMAL, то друкуються дві частини нарешті, якщо рівень деталізації дорівнює

TERSE, то друкується тільки одна частина

Мітка case або default НЕ призводить до переривання роботи оператора switch і не порушує ходу виконання програми Саме з цієї причини ми вставили оператор break після завершення виведення для рівня TERSE Без break виконання програми було б продовжено операторами, наступними за міткою default, що кожен раз призводило б до порушення винятку

Прохід до наступного умові case може виявитися корисним при деяких обставинах, проте в більшості випадків в кінці фрагмента, відповідного мітці case, повинен знаходитися оператор break Хороший стиль програмування вимагає, щоб навмисний прохід до наступної мітці case супроводжувався якимось коментарем на зразок того, що наведений у прикладі

Прохід найчастіше застосовується для використання декількох міток case з одним фрагментом програми У наступному прикладі він використовується для перекладу шістнадцятковій запису цифри в значення типу int:

public int hexValue(char ch) throws NonDigitException {

switch (ch) {

case 0: case 1: case 2: case 3: case 4:

case 5: case 6: case 7: case 8: case 9:

return (ch – 0)

case a: case b: case c:

case d: case e: case f:

return (ch – a) + 10

case A: case B: case C:

case D: case E: case F:

return (ch – A) + 10

default:

throw new NonDigitException(ch)

}

}

Оператори break в даному випадку не потрібні, тому що оператори return здійснюють вихід з методу і не дозволяють пройти до наступного оператору

Останню групу операторів усередині switch слід завершувати оператором break, return або throw, як це робилося для всіх попередніх умов Це зменшує ймовірність того, що при додаванні в майбутньому нового умови case станеться випадковий прохід до нього з того фрагмента, який колись завершував оператор switch

Всі мітки case повинні бути постійними виразами, тобто містити лише літерали і поля static final, ініціалізовані константами У кожному окремому операторі switch значення міток case повинні бути різними Допускається присутність не більше однієї мітки default

Вправа 62

Перепишіть метод з вправи 61 з використанням оператора switch

64 Цикл while і do-while

Цикл while виглядає наступним чином:

while (логічний вираз)

оператор

На початку роботи оператора обчислюється логічний вираз, і якщо воно дорівнює true, то виконується оператор (який, зрозуміло, може являти собою блок) це відбувається до тих пір, поки логічне вираз не стане рівним false

Цикл while виконується нуль або більше разів, оскільки логічний вираз може виявитися рівним false при його першому обчисленні

Іноді буває потрібно, щоб тіло циклу завідомо було виконано хоча б один раз, і тому в мові Java також передбачена конструкція do-while:

do-while:

do

оператор

while (логічний вираз)

Тут логічне вираз обчислюється після оператора Цикл виконується, поки вираз залишається рівним true Оператор, який є тілом циклу do-while, майже завжди являє собою блок

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*