Spis treści
- Rozdział 4 - Instrukcje warunkowe
- Podstawy instrukcji warunkowych
- Operatory relacyjne
- Typ boolean
- Warunki instrukcji if
- Operatory warunkowe i operator logiczny !
- Tablica prawdy operatorów warunkowych
- Nawiasy i priorytety operatorów warunkowych
- Short-circuit evaluation
- Zagnieżdżanie instrukcji warunkowych
- Bloki kodu i zakresy zmiennych
- Instrukcja switch
- Trój-argumentowy operator logiczny
- Podsumowanie
- Pytania
- Zadania
Trój-argumentowy (ternary operator) operator logiczny jest jedynym trój-argumentowym operatorem w języku Java.
Operator ten może posłużyć jako skrócona forma prostych instrukcji warunkowych – jego składnia jest następująca:
wyrazenieLogiczne ? wyrazenieGdyPrawda : wyrazenieGdyFalsz
Działanie jest następujące: jeżeli wartość wyrażenia wyrazenieLogiczne jest prawdą (true), to wartością całego wyrażenia będzie wyrazenieGdyPrawda. W przeciwnym razie, gdy wyrazenieLogiczne jest fałszem (false), zwrócone zostanie wyrazenieGdyFalsz.
Spójrzmy na poniższy przykład instrukcji if oraz użycia trój-argumentowego operatora logicznego w celu zastąpienia instrukcji if:
public class TrojargumentowyOperatorLogiczny { public static void main(String[] args) { int x = -5; int wartoscAbsolutna; if (x >= 0) { wartoscAbsolutna = x; } else { wartoscAbsolutna = -x; } System.out.println( "Wartosc absolutna liczby " + x + " wynosi " + wartoscAbsolutna ); } }
Ten prosty program wyznacza wartość absolutną liczby x. Spójrzmy na ten sam program, w którym zamiast z instrukcji warunkowej, korzystamy z trój-argumentowego operatora logicznego:
public class TrojargumentowyOperatorLogiczny { public static void main(String[] args) { int x = -5; int wartoscAbsolutna; wartoscAbsolutna = x >= 0 ? x : -x; System.out.println( "Wartosc absolutna liczby " + x + " wynosi " + wartoscAbsolutna ); } }
Tym razem wartość absolutną wyznaczamy za pomocą trój-argumentowego operatora logicznego. Jeżeli x >= 0, to wartością wyrażenia, która zostanie przypisana do zmiennej wartoscAbsolutna, będzie po prostu wartość zmiennej x. Jeżli jednak x jest mniejsze od zera, to do zmiennej wartoscAbsolutna zostanie przypisana liczba przeciwna do x, czyli -x.
Użycie operatora logicznego może być zagnieżdżone:
public class ZagniezdzonyOperatorTrojargumentowy { public static void main(String[] args) { int y = -2; String komunikat; if (y < 0) { komunikat = "mniejsze od zero"; } else if (y > 0) { komunikat = "wieksze od zero"; } else { komunikat = "rowne zero"; } // powyższe, zapisane przy uzyciu zagniezdzonych // troj-argumentowych operatorow logicznych komunikat = y < 0 ? "mniejsze od zero" : (y > 0 ? "wieksze od zero" : "rowne zero"); } }
W tym przykładzie, za pomocą trój-argumentowego operatora logicznego przypiszemy zmiennej komunikat wartość "mniejsze od zero", gdy y < 0. Jeżeli jednak wartość zmiennej y jest większa bądź równa zero, to ponownie wykorzystany zostanie trój-argumentowy operator logiczny:
y > 0 ? "wieksze od zero" : "rowne zero"
Jeżeli y > > 0, to wartością całego wyrażenia będzie "wieksze od zero" i taką wartość otrzyma zmienna komunikat. W przeciwnym razie, wartością będzie "rowne zero".
Trój-argumentowego operatora logicznego nie należy nadużywać – jeżeli mamy kilka warunków lub jeden skomplikowany warunek, lepiej zastosować instrukcję warunkową if, by nasz kod był bardziej czytelny.
Brakuje tutaj w kodzie wyświetlenia komunikat:
System.out.println(komunikat);
Faktycznie, dziękuję za zwrócenie uwagi 🙂