CodeGym /Kursy /JAVA 25 SELF /Instrukcja warunkowa: if else

Instrukcja warunkowa: if else

JAVA 25 SELF
Poziom 3, Lekcja 1
Dostępny

1. Instrukcja if else

Z programów byłoby mało pożytku, gdyby robiły to samo, niezależnie od tego, jak zmieniają się zewnętrzne okoliczności. Program musi umieć dostosowywać się do różnych sytuacji i wykonywać jedne działania w jednych przypadkach, inne — w innych.

W Javie realizuje się to za pomocą instrukcji warunkowej — słów kluczowych if i else, które pozwalają wykonywać różne bloki poleceń w zależności od prawdziwości warunku.

Instrukcja warunkowa składa się z trzech części: warunku, polecenia 1 i polecenia 2. Jeśli warunek jest prawdziwy, wykonywane jest polecenie 1, w przeciwnym razie wykonywane jest polecenie 2. Polecenia nigdy nie są wykonywane jednocześnie. Ogólny wygląd tej instrukcji jest następujący:


if (warunek)
   polecenie1;
else
   polecenie2;
Instrukcja warunkowa if-else

if tłumaczy się jako „jeśli”, a else jako „w przeciwnym razie”. Ludzkim językiem można to zapisać tak:


Jeśli warunek jest prawdziwy, to
   wykonaj polecenie1;
w przeciwnym razie
   wykonaj polecenie2;
Instrukcja warunkowa if-else ludzkim językiem

Przykłady:

// Na ekran zostanie wypisany tekst: Jesteś jeszcze dzieckiem

int age = 17;
if (age < 18)
   System.out.println("Jesteś jeszcze dzieckiem");
else
   System.out.println("Jesteś już dorosły");
// Na ekran zostanie wypisany tekst: Ciepło

int temperature = 5;
if (temperature < 0)
   System.out.println("Na dworze mróz");
else
   System.out.println("Ciepło");
// Na ekran zostanie wypisany tekst: Możesz zdawać na prawo jazdy

int age = 18;
if (age == 18)
   System.out.println("Możesz zdawać na prawo jazdy");
else
   System.out.println("Możesz odkładać na samochód");

2. Blok poleceń

Jeśli przy spełnieniu (lub niespełnieniu) warunku chcesz, aby program wykonał kilka poleceń, można je połączyć w blok poleceń.

Aby połączyć polecenia w blok, trzeba „owinąć” je klamrami. Oto jak wygląda to w ogólnym przypadku:


{
   polecenie1;
   polecenie2;
   polecenie3;
}

Poleceń w bloku może być dowolnie wiele. Nawet zero.

Przykłady połączenia instrukcji if-else i bloku poleceń:

// Na ekran zostanie wypisany tekst: Jesteś jeszcze dzieckiem. Nie kłóć się z dorosłymi

int age = 17;
if (age < 18)
{
   System.out.println("Jesteś jeszcze dzieckiem");
   System.out.println("Nie kłóć się z dorosłymi");
}
else
{
   System.out.println("Jesteś już dorosły");
   System.out.println("No ta dzisiejsza młodzież");
}
// Na ekran zostanie wypisany tekst: Ciepło

int temperature = 5;
if (temperature < 0)
{
   System.out.println("Na dworze mróz");
   System.out.println("Załóż czapkę");
}
else
   System.out.println("Ciepło");
// Wykonany zostanie pusty blok poleceń. Na ekran nic nie zostanie wypisane. 

int age = 21;
if (age == 18)
   System.out.println("Możesz otrzymać prawo jazdy");
else
{
}

3. Skrócona składnia instrukcji if

Jeśli kod w bloku else nie występuje, można go pominąć. Wtedy instrukcja if ma postać:


if (warunek)
{
    polecenie1;
}
Instrukcja warunkowa if

Przykład:

int age = 19;
if (age >= 18)
{
    System.out.println("Jesteś pełnoletni!");
}

Jak to działa?

Jeśli warunek jest prawdziwy, wykonywany jest blok kodu. Jeśli fałszywy, nic się nie dzieje — program idzie dalej.

Blok else w programie istnieje, ale jest pusty (między klamrami nie ma żadnych poleceń). Można go po prostu usunąć — w programie nic się od tego nie zmieni.

4. Łączenie warunków: else if

Czasem trzeba sprawdzić nie tylko „tak/nie”, lecz wybrać spośród kilku wariantów. Wtedy pomaga konstrukcja else if:

if (warunek1)
{
    // Wykonuje się, jeśli warunek1 jest prawdziwy
}
else if (warunek2)
{
    // Wykonuje się, jeśli warunek2 jest prawdziwy, a warunek1 — fałszywy
}
else
{
    // Wykonuje się, jeśli żaden z warunków powyżej nie pasuje
}

Przykład:

int hour = 13;
if (hour < 12)
{
    System.out.println("Dzień dobry!");
}
else if (hour < 18)
{
    System.out.println("Dzień dobry!");
}
else
{
    System.out.println("Dobry wieczór!");
}

Co się tutaj dzieje?

  • Jeśli godzina jest mniejsza niż 12 — jest rano.
  • Jeśli od 12 do 18 — jest dzień.
  • Jeśli więcej — jest wieczór.
  • Program wybiera tylko JEDNĄ z opcji! Gdy tylko któryś warunek pasuje — pozostałych nawet się nie sprawdza.

5. Ilustracja schematyczna: schemat blokowy rozgałęzienia

Tak to wygląda w postaci schematu blokowego:

A jeśli warunków jest kilka:

To bardzo przypomina rozwidlenia w grach fabularnych: pójdziesz w lewo — jedno, w prawo — co innego, prosto — jeszcze coś!

6. Jakie warunki można sprawdzać?

W okrągłych nawiasach po if musi znajdować się WYRAŻENIE LOGICZNE — którego wynik to true lub false.

Podstawowe operatory porównania:

Operator Znaczenie Przykład
==
Równe
x == 5
!=
Różne
x != 10
>
Większe
x > 0
<
Mniejsze
age < 18
>=
Większe lub równe
score >= 100
<=
Mniejsze lub równe
count <= 50

Przykłady warunków:

if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)

Zwróć uwagę: = (pojedynczy znak) — to przypisanie. == (dwa znaki) — to porównanie. To jeden z najczęstszych błędów początkujących! Jeśli przez pomyłkę napiszesz:

if (x = 5) // BŁĄD!

— kompilator zaprotestuje — i bardzo słusznie.

7. Praca z łańcuchami w warunkach

Porównanie za pomocą == w Javie działa poprawnie dla liczb. Liczb zmiennoprzecinkowych lepiej nie porównywać przez ==, a łańcuchów znaków porównywać przez == nie wolno — dla łańcuchów używaj metody equals(), która porównuje zawartość łańcuchów (a nie referencje).

O subtelnościach porównywania łańcuchów porozmawiamy później. A jak poprawnie porównywać łańcuchy — w przykładzie poniżej:

String password = console.nextLine();
if (password.equals("qwerty"))            // wywołujemy metodę equals() i przekazujemy do niej drugi łańcuch
{
    System.out.println("Zalogowano!");
}

8. Cechy i niuanse:

Klamry: potrzebne czy nie?

Jeśli po if lub else jest tylko jedno polecenie, klamry można pominąć:

if (age > 18)
    System.out.println("Masz więcej niż 18 lat!");

// Ale bezpieczniej ZAWSZE je pisać:
if (age > 18)
{
    System.out.println("Masz więcej niż 18 lat!");
}

Wskazówka: zawsze pisz z klamrami. To uchroni przed masą błędów, zwłaszcza przy rozbudowie kodu.

Błędy logiczne: uważaj na warunki!

Jeśli napiszesz tak:

if (age > 18)
    System.out.println("Masz więcej niż 18 lat!");
    System.out.println("Witamy!");

To kompilator odczyta ten kod tak:

if (age > 18)
{
    System.out.println("Masz więcej niż 18 lat!");
}

System.out.println("Witamy!");

Druga linia zawsze będzie wykonywana — klamry są potrzebne, aby obie linie znalazły się w tej samej „gałęzi”.

1
Zadanie
JAVA 25 SELF, poziom 3, lekcja 1
Niedostępne
Kupno biletu do kina 🎬
Kupno biletu do kina 🎬
1
Zadanie
JAVA 25 SELF, poziom 3, lekcja 1
Niedostępne
Sprawdzenie pogody na zewnątrz ❄️
Sprawdzenie pogody na zewnątrz ❄️
1
Zadanie
JAVA 25 SELF, poziom 3, lekcja 1
Niedostępne
Odblokowanie konta 🔒
Odblokowanie konta 🔒
1
Zadanie
JAVA 25 SELF, poziom 3, lekcja 1
Niedostępne
Powitanie zależne od pory dnia ☀️
Powitanie zależne od pory dnia ☀️
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION