Używane jest w sytuacjach, gdy wystarczy zwrócić prostą informację zależną od jednego warunku. W takim przypadku rozbudowywanie kodu jest niecelowe.
Linia 1. warunek podkreślnik logiczny znak zapytania wartość podkreślnik gdy podkreślnik prawda dwukropek wartość podkreślnik gdy podkreślnik fałsz średnik.
Linia 2. wartość podkreślnik gdy podkreślnik prawda if warunek podkreślnik logiczny else wartość podkreślnik gdy podkreślnik fałsz średnik.
Instrukcja taka odpowiada poleceniom:
Linia 1. if warunek podkreślnik logiczny dwukropek.
Linia 2. wartość podkreślnik gdy podkreślnik prawda.
Linia 3. else dwukropek.
Linia 4. wartość podkreślnik gdy podkreślnik fałsz.
Porównajmy kody dwóch funkcji. Funkcje przyjmują dwa argumenty. Każda z nich ma sprawdzić czy pierwsza liczba przekazana jako argument jest podzielna przez drugą.
Pierwsza funkcja wykorzystuje zwykłą konstrukcję if / else:
Linia 1. boolean czy podkreślnik podzielna podkreślnik przez otwórz nawias okrągły int liczba przecinek int dzielnik zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. if otwórz nawias okrągły liczba procent dzielnik znak równości znak równości 0 zamknij nawias okrągły.
Linia 3. return true średnik.
Linia 4. else.
Linia 5. return false średnik.
Linia 6. zamknij nawias klamrowy.
Druga funkcja wykorzystuje wyrażenie trójargumentowe:
Linia 1. boolean czy podkreślnik podzielna podkreślnik przez otwórz nawias okrągły int liczba przecinek int dzielnik zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. return liczba procent dzielnik znak równości znak równości 0 znak zapytania true dwukropek false średnik.
Linia 3. zamknij nawias klamrowy.
Obie powyższe funkcje mogą być zapisane również następująco:
Linia 1. boolean czy podkreślnik podzielna podkreślnik przez otwórz nawias okrągły int liczba przecinek int dzielnik zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. return liczba procent dzielnik znak równości znak równości 0.
Linia 3. zamknij nawias klamrowy.
Innym przykładem zastosowania wyrażenia trójargumentowego jest podanie jednego z dwóch komunikatów, zależnych od spełnienia pewnego warunku.
Linia 1. int wartosc znak równości 15 średnik.
Linia 2. System kropka out kropka println otwórz nawias okrągły wartosc zamknij nawias ostrokątny 20 znak zapytania cudzysłów Dużo cudzysłów dwukropek cudzysłów Mało cudzysłów zamknij nawias okrągły średnik.
Linia 3. prawy ukośnik prawy ukośnik Mało.
Linia 5. wartosc znak równości 23 średnik.
Linia 6. System kropka out kropka println otwórz nawias okrągły wartosc zamknij nawias ostrokątny 20 znak zapytania cudzysłów Dużo cudzysłów dwukropek cudzysłów Mało cudzysłów zamknij nawias okrągły średnik.
Linia 7. prawy ukośnik prawy ukośnik Dużo.
Instrukcja switch
w języku Java
Polecenie switch zapisane w języku Java wygląda następująco:
Linia 1. switch otwórz nawias okrągły numerUcznia zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. case 1 dwukropek.
Linia 3. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 1 kropka.
Linia 4. break średnik.
Linia 5. case 2 dwukropek.
Linia 6. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 2 kropka.
Linia 7. break średnik.
Linia 8. case 3 dwukropek.
Linia 9. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 3 kropka.
Linia 10. break średnik.
Linia 11. case 4 dwukropek.
Linia 12. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 4 kropka.
Linia 13. break średnik.
Linia 1. int numerUcznia znak równości 3 średnik.
Linia 3. switch otwórz nawias okrągły numerUcznia zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. case 1 dwukropek.
Linia 5. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 1 kropka.
Linia 6. break średnik.
Linia 7. case 2 dwukropek.
Linia 8. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 2 kropka.
Linia 9. break średnik.
Linia 10. case 3 dwukropek.
Linia 11. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 3 kropka.
Linia 12. break średnik.
Linia 13. case 4 dwukropek.
Linia 14. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 4 kropka.
Linia 15. break średnik.
Powyższy przykład przedstawia użycie switch na zmiennej typu całkowitego. Jednak mamy również możliwość wykorzystywania tego polecenia na zmiennych typu char:
Linia 1. char litera znak równości apostrof d apostrof średnik.
Linia 3. switch otwórz nawias okrągły litera zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. case apostrof a apostrof dwukropek.
Linia 5. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof a apostrof.
Linia 6. break średnik.
Linia 7. case apostrof b apostrof dwukropek.
Linia 8. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof b apostrof.
Linia 9. break średnik.
Linia 10. case apostrof c apostrof dwukropek.
Linia 11. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof c apostrof.
Linia 12. break średnik.
Linia 13. case apostrof d apostrof dwukropek.
Linia 14. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof d apostrof.
Linia 15. break średnik.
Linia 16. zamknij nawias klamrowy.
Ważne!
Zwróć uwagę na użycie apostrofów zamiast cudzysłowów. W języku Java stosujemy apostrofy, jeżeli chcemy odwołać się od konkretnej litery. Gdybyśmy użyli cudzysłowu, oznaczałoby to odwołanie się do fragmentu ciągu znaków.
Zmienna typu char może przechowywać jedynie litery, dlatego znak apostrofu to jedyna możliwość.
Użycie polecenia break
W poprzednich dwóch przykładach pojawiło się polecenie breakbreakbreak. Jego użycie w funkcji switch nie jest obowiązkowe, ale stosujemy je bardzo często. Polecenie to ma za zadanie wyjść z bloku wyboru wielokrotnego (switch). Jeżeli któryś z przypadków (case) się wykona, nie chcemy, aby program wykonywał kolejne przypadki.
W pierwszym przykładzie, gdzie numerUcznia ustawiony został na wartość 3, wykona się case 3. Jeżeli usunęlibyśmy polecenie break z tego bloku, wykonałby się również case 4. Aby temu zapobiec, do każdego z przypadków na samym końcu dodajemy polecenie break.
Łączenie warunków
Wiadomo już, dlaczego stosujemy instrukcję break. Pomyśl, jak zachowa się poniższy program:
Linia 1. char litera znak równości apostrof B apostrof średnik.
Linia 3. switch otwórz nawias okrągły litera zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. case apostrof a apostrof dwukropek.
Linia 5. case apostrof A apostrof dwukropek.
Linia 6. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof a apostrof lub apostrof A apostrof.
Linia 7. break średnik.
Linia 8. case apostrof b apostrof dwukropek.
Linia 9. case apostrof B apostrof dwukropek.
Linia 10. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to apostrof b apostrof lub apostrof B apostrof.
Linia 11. break średnik.
Linia 12. zamknij nawias klamrowy.
Linia 1. char litera znak równości wielka apostrof B apostrof średnik.
Linia 3. switch otwórz nawias okrągły litera zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. case małe apostrof a apostrof dwukropek.
Linia 5. case wielkie apostrof A apostrof dwukropek.
Linia 6. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to małe apostrof a apostrof lub wielkie apostrof A apostrof.
Linia 7. break średnik.
Linia 8. case małe apostrof b apostrof dwukropek.
Linia 9. case wielkie apostrof B apostrof dwukropek.
Linia 10. prawy ukośnik prawy ukośnik wartość zmiennej apostrof litera apostrof to małe apostrof b apostrof lub wielkie apostrof B apostrof.
Linia 11. break średnik.
Linia 12. zamknij nawias klamrowy.
Użycie dwóch słów kluczowych case spowoduje, że możemy dokonać wyboru na podstawie większej liczby wyrażeń. Warto pamiętać, że po wykonaniu instrukcji program będzie kontynuował sprawdzanie następnych warunków, chyba że natrafi na instrukcję break.
Skoro wartość zmiennej litera to 'B', wykona się linijka 10. Efekt byłby taki sam, gdyby litera była równa 'b'.
Skoro wartość zmiennej litera to wielkie 'B', wykona się linijka 10. Efekt byłby taki sam, gdyby litera była równa małe 'b'.
Polecenie default
W instrukcji wyboru wielokrotnego mamy możliwość stosowania polecenia default. Oznacza ono „w każdym innym przypadku”, czyli jeżeli wartość zmiennej podanej do sprawdzenia nie będzie równa żadnemu z ustawionych przypadków, program wykona fragment kodu zawarty w poleceniu default. Przeanalizuj poniższy przykład:
Linia 1. int numerUcznia znak równości 11 średnik.
Linia 3. switch otwórz nawias okrągły numerUcznia zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. case 1 dwukropek.
Linia 5. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 1 kropka.
Linia 6. break średnik.
Linia 7. case 2 dwukropek.
Linia 8. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 2 kropka.
Linia 9. break średnik.
Linia 10. case 3 dwukropek.
Linia 11. prawy ukośnik prawy ukośnik wypisz informacje o uczniu numer 3 kropka.
Linia 12. break średnik.
Linia 13. default dwukropek.
Linia 14. prawy ukośnik prawy ukośnik nie ma ucznia o podanym numerze.
Linia 15. zamknij nawias klamrowy.
Wynika z niego, że wartość zmiennej numerUcznia nie widnieje w żadnym z przypadków, zatem wykona się polecenie default. Jeżeli polecenie to wykorzystane zostało na końcu instrukcji wyboru wielokrotnego, nie ma konieczności używania polecenia break. Jednak gdy za default znajdują się inne case, należy dodać na końcu break, aby inne przypadki się nie wykonały.
Słownik
break
break
polecenie używane w języku Java do przerwania wykonywania konkretnego case i wyjścia z instrukcji switch