Instrukcje warunkowe – if, else, switch w Javie

TL;DR: Instrukcje warunkowe pozwalają programowi podejmować decyzje. If/else sprawdza warunki prawda/fałsz, switch porównuje wartości konkretne. To podstawa logiki w każdym programie – bez nich kod wykonywałby się zawsze tak samo.

Programowanie to sztuka tworzenia programów które potrafią podejmować decyzje. Wyobraź sobie program który zawsze robi dokładnie to samo – byłby bezużyteczny. Instrukcje warunkowe to narzędzia dzięki którym Twój kod może wybierać różne ścieżki działania w zależności od sytuacji.

Dlaczego instrukcje warunkowe są ważne?

W prawdziwym życiu ciągle podejmujemy decyzje: „Jeśli pada deszcz, wezmę parasol”, „Jeśli jest piątek, idę na pizzę”. Programy działają podobnie – muszą reagować na różne sytuacje. Bez instrukcji warunkowych każdy program wykonywałby się identycznie za każdym razem.

Co się nauczysz:

  • Jak działa instrukcja if i kiedy jej używać
  • Różnice między if, else if i else
  • Kiedy switch jest lepszy od if
  • Jak unikać typowych błędów początkujących
  • Praktyczne przykłady z życia codziennego

Wymagania wstępne:

Poziom: Całkowite podstawy – twój pierwszy kontakt z programowaniem

Potrzebujesz znać: Podstawy Java (zmienne, typy danych), jak uruchomić prosty program

Instrukcja if – podstawa podejmowania decyzji

Instrukcja if to najważniejsza instrukcja warunkowa. Działa jak pytanie: „Czy coś jest prawdą?”. Jeśli tak – wykonaj kod, jeśli nie – pomiń go.

Instrukcja warunkowa – fragment kodu który wykonuje się tylko gdy określony warunek jest spełniony (prawdziwy)
public class PodstawyIf {
    public static void main(String[] args) {
        int wiek = 18;
        
        // Podstawowy if
        if (wiek >= 18) {
            System.out.println("Jesteś pełnoletni!");
        }
        
        // Ten kod wykona się zawsze
        System.out.println("Koniec programu");
    }
}
Analogia: If to jak bramkarz w klubie – sprawdza czy masz odpowiedni wiek. Jeśli tak, wpuszcza Cię do środka. Jeśli nie, stoisz przed drzwiami.

If, else if, else – więcej możliwości

Życie rzadko ma tylko dwie opcje. Dlatego Java oferuje else if i else do obsługi wielu scenariuszy.

public class WiekKategorie {
    public static void main(String[] args) {
        int wiek = 25;
        
        if (wiek < 13) {
            System.out.println("Jesteś dzieckiem");
        } else if (wiek < 18) {
            System.out.println("Jesteś nastolatkiem");
        } else if (wiek < 65) {
            System.out.println("Jesteś dorosły");
        } else {
            System.out.println("Jesteś seniorem");
        }
    }
}
Java sprawdza warunki po kolei, od góry do dołu. Gdy znajdzie pierwszy prawdziwy warunek, wykonuje odpowiedzialny kod i pomija resztę.

Instrukcja switch - elegancka alternatywa

Gdy masz wiele konkretnych wartości do sprawdzenia, switch może być czytelniejszy niż łańcuch if-else if.

public class DniTygodnia {
    public static void main(String[] args) {
        int dzien = 3; // 1=poniedziałek, 2=wtorek, itd.
        
        switch (dzien) {
            case 1:
                System.out.println("Poniedziałek - ciężki start");
                break;
            case 2:
                System.out.println("Wtorek - już lepiej");
                break;
            case 3:
                System.out.println("Środa - połowa tygodnia");
                break;
            case 6:
            case 7:
                System.out.println("Weekend - super!");
                break;
            default:
                System.out.println("Normalny dzień roboczy");
        }
    }
}
Uwaga: Nigdy nie zapomnij o break! Bez niego kod "przepadnie" do następnej sekcji i wykona również jej zawartość.

Operatory porównania - narzędzia do warunków

Żeby tworzyć sensowne warunki, musisz znać operatory porównania. To "słowa" którymi mówisz Java czego szukasz.

OperatorZnaczeniePrzykład
==równewiek == 18
!=różnenazwa != "admin"
>większepunkty > 100
<mniejszetemperatura < 0
>=większe lub równewiek >= 18
<=mniejsze lub równeocena <= 6
Typowy błąd początkujących: Używanie pojedynczego = zamiast == do porównania. Znak = to przypisanie, == to porównanie!

Łączenie warunków - operatory logiczne

Czasem jeden warunek to za mało. Java pozwala łączyć warunki operatorami logicznymi.

public class ZlozoneWarunki {
    public static void main(String[] args) {
        int wiek = 20;
        boolean maLicencje = true;
        String miasto = "Warszawa";
        
        // Operator && (AND) - oba warunki muszą być prawdziwe
        if (wiek >= 18 && maLicencje) {
            System.out.println("Możesz prowadzić samochód");
        }
        
        // Operator || (OR) - wystarczy jeden prawdziwy warunek
        if (miasto.equals("Warszawa") || miasto.equals("Kraków")) {
            System.out.println("Mieszkasz w dużym mieście");
        }
        
        // Operator ! (NOT) - odwraca warunek
        if (!maLicencje) {
            System.out.println("Musisz zdać egzamin na prawo jazdy");
        }
    }
}
Pro tip: Używaj nawiasów dla czytelności: (wiek >= 18) && (punkty > 50) jest jaśniejsze niż wiek >= 18 && punkty > 50

Kiedy używać if, a kiedy switch?

Używaj if gdy:

  • Sprawdzasz zakresy wartości (wiek > 18)
  • Łączysz różne warunki (&&, ||)
  • Porównujesz ze sobą zmienne

Używaj switch gdy:

  • Masz konkretne, znane wartości
  • Sprawdzasz jedną zmienną
  • Masz wiele opcji do wyboru

Częste błędy początkujących

Pułapka #1: Zapominanie o break w switch

// BŁĄD!
switch (ocena) {
    case 5:
        System.out.println("Bardzo dobry");
        // Brak break - kod "przepadnie" dalej!
    case 4:
        System.out.println("Dobry");
        break;
}
Pułapka #2: Porównywanie String przez ==

// BŁĄD!
if (imie == "Jan") { }

// POPRAWNIE!
if (imie.equals("Jan")) { }
Czy mogę mieć if wewnątrz innego if?

Tak! To się nazywa zagnieżdżanie. Ale uważaj - za dużo poziomów robi kod nieczytelnym. Lepiej użyj operatorów && lub ||.

Dlaczego mój switch nie działa z String?

W Java 6 i wcześniejszych switch nie obsługiwał String. W Java 7 (2011) dodano tę funkcję. Upewnij się że używasz odpowiedniej wersji Java.

Co się stanie jeśli zapomnę else?

Nic! Else nie jest obowiązkowe. Jeśli warunek w if jest fałszywy, program po prostu przejdzie dalej.

Czy mogę użyć switch z boolean?

Nie, switch nie obsługuje boolean. Boolean ma tylko dwie wartości (true/false), więc lepiej użyj if.

Jak sprawdzić czy liczba jest parzysta?

Użyj operatora modulo: if (liczba % 2 == 0). Jeśli reszta z dzielenia przez 2 wynosi 0, liczba jest parzysta.

Przydatne zasoby:

🚀 Zadanie dla Ciebie

Stwórz prosty kalkulator ocen:

Napisz program który:

  1. Pobiera punkty z testu (0-100)
  2. Używa if-else if do przypisania oceny (90-100=5, 80-89=4, itd.)
  3. Używa switch do wyświetlenia komentarza dla każdej oceny
  4. Obsługuje błędne wartości (ujemne, powyżej 100)

Bonus: Dodaj sprawdzenie czy ocena to zaliczenie (>= 3) czy niezaliczenie.

Masz pytania o instrukcje warunkowe? A może udało Ci się rozwiązać zadanie? Napisz w komentarzach - chętnie pomogę!

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry