naukaJavy.pl

  • Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Kurs języka Java

Instrukcja wyboru SWITCH

Email Drukuj

Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w pewnym sensie rozszerzenie instrukcji warunkowej IF. Ogólna składnia instrukcji SWITCH jest następująca:

switch ({wyrażenie wyboru}) {
case {wartość wyboru}:
{ciąg instrukcji dla danego wariantu}

case {inna wartość wyboru}:
{ciąg instrukcji dla danego wariantu}

default:
{ciąg instrukcji dla wariantu domyślnego}
}

W instrukcji SWITCH – inaczej niż w instrukcji IF – nie określamy warunku, który musi być prawdziwy, aby ujęty w instrukcji kod się wykonał. Tutaj określamy {wyrażenie wyboru}, którego wartością jest liczba całkowita i definiujemy warianty, które mają się wykonać w zależności od tego, jaka jest wartość tego wyrażenia. Warianty oznaczamy słówkiem kluczowym case, za którym umieszczamy wartość dla której kod z tego wariantu ma być uruchomiony.

Dodatkowo, instrukcja SWITCH umożliwia określenie wariantu domyślnego, który to wariant oznaczamy słówkiem kluczowym default. Wariant ten wykonywany jest, jeśli dla danej wartości {wyrażenia wyboru} nie określono wariantu typu case.

W poniższym przykładzie implementujemy z użyciem instrukcji SWITCH funkcję, która określa parzystość liczy przekazanej jako parametr wywołania:

public void oddOrEven(int x) {
switch (x % 2) {
case 0:
System.out.println(x + " jest liczbą parzystą");
break;

case 1:
System.out.println(x + " jest liczbą nieparzystą");
break;

default:
System.out.println("nieprzewidziana sytuacja");
}
}

Co ważne, wariant jest tylko punktem początkowym i kod będzie się wykonywał przechodząc kaskadowo przez kolejne warianty, aż do końca instrukcji SWITCH, chyba że wykonanie to przerwiemy za pomocą instrukcji break, tak jak to robimy w powyższym przykładzie. Instrukcja SWITCH działa w ten sposób, że w pierwszej kolejności wyliczana jest wartość wyrażenia wyboru, a następnie wykonywany jest skok do wariantu oznaczonego tą wartością.

Operator % (tj. operator reszty z dzielenia) zaimplementowany w Javie może zwracać wartości ujemne, stąd wyrażenie x % 2 oprócz wartości 1 i 0 może zwrócić także wartość -1. Stanie się tak dla każdej ujemnej liczby nieparzystej. Powyższy program nie rozpozna prawidłowo takiej sytuacji i wyświetli komunikat „nieprzewidziana sytuacja”. Poprawmy go więc w następujący sposób:

public void oddOrEven(int x) {
switch (x % 2) {
case 0:
System.out.println(x + " jest liczbą parzystą");
break;

case -1: // dodano wariant dla wartości -1
case 1:
System.out.println(x + " jest liczbą nieparzystą");
break;

default:
System.out.println("nieprzewidziana sytuacja");
}
}

Wariant z wartością -1 nie zawiera żadnych instrukcji, ale ponieważ nie zawiera też instrukcji break, zatem wykonany będzie dla tej wartości kod z wariantu znajdującego się poniżej, tj. dla wariantu z wartością 1. W ten sposób uruchamiamy de facto ten sam kod dla wartości -1 i 1. Nasza funkcja jest już w pełni poprawna, tj. prawidłowo rozpoznaje także nieujemne liczby nieparzyste. Wariant oznaczony etykietą default nie zostanie już zatem nigdy uruchomiony, ale możemy go pozostawić na wszelki wypadek.

 

Wiadomości

Vishal Sikka, CTO w firmie SAP zaapelował o autentyczne, pełne przekazanie zarządzania rozwojem języka i platformy Java w ręce zrzeszenia firm działającego na zasadzie równoprawności - zrzeszenia nie zdominowanego przez firmę SUN, czy obecnie Oracle (SUN został kupiony przez Oracle).

Jednocześnie zaapelował o udostępnienie kodu źródłowego Maszyny Wirtualnej Javy na zasadach open-source.

SAP zdecydowany jest zainwestować znaczne środki w rozwój Javy, jeśli tylko postulaty te zostaną spełnione – dodał.

Reklama

Co to jest

Apache Lucene Java to biblioteka open-source napisana w języku Java. Lucene służy do implementacji mechanizmów wyszukiwania pełnotekstowego – taki mały Google, który możemy mieć we własnej aplikacji.


© Wszelkie prawa zastrzeżone dla Mariusza Lipińskiego

kontakt: mariusz.lipinski@naukajavy.pl | strona domowa: www.mariuszlipinski.pl