Java 5

5.3. оператор switch

Оператор switch забезпечує ясний спосіб перемикання між різними частинами програмного коду в залежності від значення однієї змінної або виразу. Загальна форма цього оператора така:

Результатом обчислення виразу може бути значення будь-якого простого типу, при цьому кожне з значень, зазначених в операторах case. має бути сумісним з типом з виразом в операторі switch. Всі ці значення повинні бути унікальними літералами. Якщо ж ви вкажете в двох операторах case однакові значення, транслятор видасть повідомлення про помилку.

Оператор switch працює наступним чином. Обчислення значення виразу порівнюється з усіма значеннями, зазначеними в операторах case. Якщо при цьому знаходиться оператор case зі значенням, яке збігається зі значенням вирази, управління передається стоїть за ним (після двокрапки) коду. Якщо ж значення виразу не відповідає жоден з операторів case. управління передається коду, розташованому після ключового слова default. Відзначимо, що оператор default необов'язковий. У разі, коли жоден з операторів case не відповідає значенню виразу і в switch відсутня оператор default. виконання програми триває з оператора, наступного за оператором switch.

Усередині оператора switch (а також всередині циклічних конструкцій) break без мітки призводить до передачі управління на код, що стоїть після оператора switch. Якщо break відсутній, після поточного розділу case буде виконуватися наступний. Іноді буває зручно мати в операторі switch кілька суміжних розділів case, що не розділених оператором break.

Нижче наведено ще більш корисний приклад, де оператор switch використовується для передачі управління відповідно до різними кодами символів у вхідному рядку. Програма підраховує кількість рядків, слів та символів у текстовому рядку,

class WordCount
static String text = "Сейчасмиізучаем \ n" +
"Основи програмування \ n" +
"На язикеJava \ n";
static int len ​​= text.length ();
public static void main (String args [])
boolean inWord = false;
int numChars = 0;
int numWords = 0;
int numLines = 0;
for (int i = 0; i char з = text.charAt (i);
numChars ++;
switch (c)
case '\ n': numLines ++; // Увелічіваемсчетчікстрок
case '\ t': // Підраховуємо кількість символів
case ''. if (inWord)
numWords ++;
inWord = false;
>
break;
default: inWord = true;
>
>
System.out.println ( "\ t" + numLines + "\ t" + numWords + "\ t" + numChars);
>
>

Схожі статті