Instrukcja warunkowa – IF

java

W tym artykule poznasz instrukcje warunkowe w Javie. Jest to mechanizm, który pozwala wpływać na to, czy dany fragment kodu ma zostać “wykonany”, czy nie przez środowisko uruchomieniowe Javy.

Do tej pory nauczyliśmy się jak stworzyć pierwszy program, jak przekazywać dane do programu oraz czym są zmienne. Jeśli któryś z tematów jest Ci obcy, wróć do poprzednich artykułów.

Wszystkie artykuły z cyklu “Kurs Java”:


Czego potrzebujesz:

  • zainstalowane JDK (instrukcja)
  • 15 min wolnego czasu

Standardowo, instrukcje w Javie wykonywane są linijka po linijce, a punktem startowym jest metoda main. Jednak co zrobić w sytuacji, gdy nie chcemy wykonywać wszystkich linii kodu? Lub gdy zachodzi potrzeba wykonania jednej bądź drugiej instrukcji (nie obu na raz), zależnie od warunku?

Napiszmy program, który prosi o liczbę całkowitą, a następnie zwraca jej dwukrotność

import java.util.Scanner;

class Program {
    public static void main (String args[]) {
		int liczba;
		Scanner scanner = new Scanner(System.in);

		System.out.println("Podaj liczbę: ");
		liczba = scanner.nextInt();

		System.out.println("Dwukrotność: "+(liczba*2));
    }
}
java instrukcja warunkowa if

Zmodyfikujmy teraz program w taki sposób, aby wypisał na ekranie, czy liczba jest większa, czy mniejsza od 0.

Do wykonania takiej zmiany, będziemy potrzebowali instrukcji warunkowej.

Instrukcja warunkowa IF

Spójrzmy na podstawową konstrukcję:

if(warunek){
	instrukcja;
}

Warunkiem będzie dowolna konstrukcja zwracająca wartość typu boolean (true lub false). Jeśli wartość będzie true, to instrukcje zawarte w bloku {} zostaną wykonane, w przeciwnym przypadku, blok zostanie pominięty.

Uzupełnijmy nasz program:

import java.util.Scanner;

class Program {
    public static void main (String args[]) {
		int liczba;
		Scanner scanner = new Scanner(System.in);

		System.out.println("Podaj liczbę: ");
		liczba = scanner.nextInt();

		System.out.println("Dwukrotność: "+(liczba*2));

		if(liczba > 0) {
			System.out.println("Liczba jest większa od 0.");			
		}
		if(liczba < 0) {
			System.out.println("Liczba jest mniejsza od 0.");			
		}
    }
}
java sprawdzenie czy liczba parzysta

W przeciwnym wypadku…

Instrukcja warunkowa IF ma też rozbudowaną formę, która pozwala na określenie, co ma się wydarzyć, gdy warunek będzie nieprawdziwy (false).

if(warunek) {
	instrukcja 1;
} else {
	instrukcja 2;
}

Jeśli warunek będzie prawdziwy, to wykona się instrukcja 1, w przeciwnym wypadku instrukcja 2.

Rozwiązanie problemu, które napisaliśmy wyżej, było mało optymalne, ponieważ robiliśmy dwa sprawdzenia tego samego warunku. Wiemy przecież, że jeśli coś jest mniejsze od zera, to nie może być jednocześnie większe od zera i na odwrót. Wystarczy zatem sprawdzić, jeden z warunków.

import java.util.Scanner;

class Program {
    public static void main (String args[]) {
		int liczba;
		Scanner scanner = new Scanner(System.in);

		System.out.println("Podaj liczbę: ");
		liczba = scanner.nextInt();

		System.out.println("Dwukrotność: "+(liczba*2));

		if(liczba > 0) {
			System.out.println("Liczba jest większa od 0.");			
		} else {
			System.out.println("Liczba jest mniejsza od 0.");			
		}
    }
}

Zauważ, że wynik programu jest identyczny.

Świetnie, poznaliśmy już instrukcję warunkową, oraz jej rozszerzoną wersję. Ale… to nie wszystko 🙂

Else if

Gdybyśmy mieli napisać program, który dla podanej liczby powie, z którego jest zakresu, ale zakresów byłoby więcej niż 2 🙂

Ubierzmy to w jakieś zadanie 🙂 Dla podanego wieku, odpowiedz czy osoba jest dzieckiem, nastolatkiem czy dorosłym. Zgdonie z poniższymi założeniami.

Jeśli wiek:

  • mniejszy niż 13, to dziecko
  • większy do 13 i mniejszy od 18, to nastolatek
  • większy bądź równy 18, to dorosły

Najzgrabniejszym rozwiązaniem byłoby użycie konstrukcji “else if” lecz czym ona jest? Poznajmy konstrukcję:

if(warunek 1)  {
	instrukcja 1;
} else if(warunek 2) {
	instrukcja 2;
} else if(warunek 3) {
	instrukcja 3;
} 

Powyższy zapis wprowadza dodatkowe warunki do instrukcji if. Jeśli warunek 1, jest prawdziwy, to wykonuje instrukcję 1.

Jeśli warunek 1 jest nieprawdziwy oraz warunek 2 jest prawdziwy, to wykonuje instrukcję 2.

Jeśli warunek 1 jest nieprawdziwy oraz warunek 2 jest nieprawdziwy oraz warunek 3 jest prawdziwy, to wykonuje instrukcję 3.

Nie ma ograniczenia co do ilości warunków. Zaimplementujmy zatem zadanie z wiekiem.

import java.util.Scanner;

class Program {
    public static void main (String args[]) {
		int wiek;
		Scanner scanner = new Scanner(System.in);

		System.out.println("Podaj wiek");
		wiek = scanner.nextInt();

		if(wiek >= 18) {
			System.out.println("dorosły");			
		} else if(wiek >= 13) {
			System.out.println("nastolatek");			
		} else if(wiek > 0) {
			System.out.println("dziecko");			
		} else {
			System.out.println("niepoprwany wiek");
		}	
    }
}
java else if

Podsumowanie

Tym sposobem omówiliśmy instrukcję warunkową, która pozwala nam obsłużyć wszystkie przypadki, w których chcemy, aby kod wykonał się tylko w określonym przypadku (po spełnieniu warunku).

Nie jest to jedyna instrukcja warunkowa w Javie. We własnym zakresie zapoznaj się z instrukcją warunkową switch. Jest ona zdecydowanie rzadziej używana w kodzie, ale ma swoje zastosowania.

W kolejnym artykule poznasz instrukcję iteracyjną for, która pozwala powtarzać kod określoną liczbę razy.

Teraz czas na Ciebie 😀 Daj znać w komentarzu, jak Ci idzie 🙂 Poprawnie wykonane zadanie, będzie potwierdzeniem, że umiesz.

Zadanie. Napisz program, który poprosi użytkownika o podanie dwóch liczb. Po podaniu liczb, przez użytkownika, program powinien spytać się o to, jaką operację na liczbach ma wykonać. Do wyboru będą dwie opcje (1 – dodawanie, 2 – odejmowanie).

Gdy użytkownik wybierze 1, to oblicz i wyświetl na ekranie wynik dodawania. Jeśli użytkownik wybierze 2, to oblicz i wyświetl na ekranie wynik odejmowania liczb. W odejmowaniu odejmij drugą liczbę od pierwszej.

Powodzenia! 😀

Subscribe
Powiadom o
guest

1 Komentarz
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
Tomasz
Tomasz
2 lat temu
import java.util.Scanner;

public class InstructionIfExample {

    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        int num1, num2, selectAnOption;

        System.out.println("Drogi użytkowniku, proszę podaj dwie liczby całkowite");
        System.out.println("podaj pierwsza liczbę");
        num1 = scanner.nextInt();

        System.out.println("podaj drugą liczbę");
        num2 = scanner.nextInt();

        System.out.println("Jaką operację mam wykonać? wybierz: 1 - dodatwanie, 2 - odejmowanie");
        selectAnOption = scanner.nextInt();
        if (selectAnOption == 1) {
            System.out.println("wynik dodawania to " + (num1 + num2));
        } else {
            System.out.println("wynik odejmowania to " + (num2 - num1));
        }

    }
}