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
Tablica prawdy to tabela informująca, jaką wartość ma wyrażenie, w którym wykorzystywany jest pewien operator z podanymi mu argumentami.
Poniższa tabela pokazuje możliwe wartości każdego z operatorów poznanych w tym rozdziale w zależności od tego, jakie wartości mają jego argumenty:
x | y | x || y | x && y | !x |
---|---|---|---|---|
false | false | false | false | true |
true | false | true | false | false |
false | true | true | false | true |
true | true | true | true | false |
Jak widać, operator && zwraca true tylko wtedy, gdy oba jego argumenty mają wartość true. Z kolei operator || zwraca true, gdy chociaż jeden z argumentów ma wartość true.
Przykład dla wartości a = 0 i b = 100:
a > 0 | b >= 100 | a > 0 || b >= 100 |
a > 0 && b >= 100 |
!(a > 0) | !(b >= 100) |
---|---|---|---|---|---|
false | true | true | false | true | false |
Spójrzmy na przykład korzystający z operatorów warunkowych:
import java.util.Scanner; public class DzienTygodniaOperatoryWarunkowe { public static void main(String[] args) { int dzienTygodnia; System.out.println("Podaj numer dnia tygodnia:"); dzienTygodnia = getInt(); if (dzienTygodnia < 1 || dzienTygodnia > 7) { System.out.println("Nieprawidlowy dzien tygodnia."); } else if (dzienTygodnia == 5) { System.out.println("Jutro weeekeend! :)"); } else if (!(dzienTygodnia == 6 || dzienTygodnia == 7)) { System.out.println("Praca :("); } else { System.out.println("Weekend! :)"); } } public static int getInt() { return new Scanner(System.in).nextInt(); } }
W tym przykładzie korzystamy zarówno z operatora || (logiczne "lub"), jak i operatora zaprzeczenia !.
W pierwszej części instrukcji if:
if (dzienTygodnia < 1 || dzienTygodnia > 7) {
sprawdzamy, czy dzień tygodnia jest mniejszy od 1 lub większy od 7 – w takim przypadku informujemy użytkownika, że podany dzień jest nieprawidłowy.
W jednym z kolejnych warunków:
else if (!(dzienTygodnia == 6 || dzienTygodnia == 7)) {
sprawdzamy:
- Czy dzisiejszy dzień to sobota lub niedziela?
- a następnie:
- Czy zaprzeczenie powyższego (z pomocą użycia operatora !) jest prawdą? Innymi słowy, sprawdzamy, czy dniem tygodnia nie jest ani sobota, ani niedziela.
W wyniku tak zapisanych warunków, instrukcja związana z tą sekcją else if będzie wykonana wtedy, gdy zmienna dzienTygodnia będzie miała wartość z inną niż 6 i 7.
Dwa przykładowe wykonanie programu: