Rozdział 4 - Instrukcje warunkowe - Typ boolean

Jednym z typów podstawowych języka Java, które poznaliśmy w rozdziale o zmiennych, był typ boolean.

Zmienne typu boolean mogą przechowywać tylko jedną z dwóch możliwych wartości – true bądź false:

Nazwa pliku: ZlaWartoscBoolean.java
public class ZlaWartoscBoolean {
  public static void main(String[] args) {
    boolean zmienna;

    // blad kompilacji
    // zmienna moze przechowywac tylko wartosc true/false!
    zmienna = 5;
  }
}

Próba kompilacji powyższego programu zakończy się błędem, ponieważ zmienne typu boolean nie mogą przechowywać liczb:

ZlaWartoscBoolean.java:7: error: incompatible types: int cannot be converted to boolean zmienna = 5; ^ 1 error

Zmienne typu boolean przydają się do przechowywania informacji typu prawda/fałsz, np. czyUzytkownikZalogowany, czyLiczbaParzysta, czyZakonczycProgram.

Spójrzmy na przykład programu, który zapisuje w zmiennej typu boolean informację, czy podana przez użytkownika liczba jest parzysta, czy nie:

Nazwa pliku: CzyLiczbaParzysta.java
import java.util.Scanner;

public class CzyLiczbaParzysta {
  public static void main(String[] args) {
    int liczba;
    boolean czyParzysta;

    System.out.println("Prosze podac liczbe:");
    liczba = getInt();

    if (liczba % 2 == 0) {
      czyParzysta = true;
    } else {
      czyParzysta = false;
    }

    System.out.println("Czy liczba parzysta: " + czyParzysta);
  }

  public static int getInt() {
    return new Scanner(System.in).nextInt();
  }
}

Po pobraniu od użytkownika liczby, korzystamy z operatora % (modulo, reszta z dzielenia) i wynik przyrównujemy do liczby 0:

if (liczba % 2 == 0) {

Jeżeli liczba jest parzysta, to operator % zwróci 0, które zostanie przyrównane do 0 i warunek będzie spełniony – w tym przypadku, zmiennej czyParzysta nadajemy wartość true. W przeciwnym razie, gdy liczba będzie nieparzysta, operator % zwróci 1, jako reszta z dzielenia, więc wykonana zostania instrukcja związana z sekcją else – zmiennej czyParzysta przypiszemy false.

Na końcu programu wypisujemy na ekran wartość zmiennej czyParzysta. Przykładowe wykonanie programu:

Prosze podac liczbe: 5 Czy liczba parzysta: false

Powyższy program jest poprawny, ale moglibyśmy skorzystać z pewnej właściwości operatorów relacyjnych. Jak już wspomnieliśmy, operator relacyjny zwraca jedną z dwóch możliwych wartości: true bądź false.

Są to dokładnie takie same wartości, jakie może przechowywać typ boolean! Czy nie moglibyśmy w takim razie przypisać wyniku działania operatora relacyjnego do zmiennej typu boolean? Możemy – spójrzmy na przykład poniższego programu korzystającego z tej właściwości:

Nazwa pliku: CzyLiczbaParzystaWersja2.java
import java.util.Scanner;

public class CzyLiczbaParzystaWersja2 {
  public static void main(String[] args) {
    int liczba;
    boolean czyParzysta;

    System.out.println("Prosze podac liczbe:");
    liczba = getInt();

    czyParzysta = liczba % 2 == 0;

    System.out.println("Czy liczba parzysta: " + czyParzysta);
  }

  public static int getInt() {
    return new Scanner(System.in).nextInt();
  }
}

W tej wersji programu, zamiast skorzystać z instrukcji warunkowej, przypisaliśmy do zmiennej czyParzysta wynik wyrażenia:

liczba % 2 == 0;

Wyrażenie to ma wartość false, jeżeli liczba jest nieparzysta, a wartość true, gdy liczba jest parzysta.

Możemy w ten sposób przypisywać do zmiennych typu boolean wyniki różnego rodzaju porównań korzystających z operatorów relacyjnych – spójrzmy na przykład:

Nazwa pliku: TypBooleanOperatoryRelacyjne.java
public class TypBooleanOperatoryRelacyjne {
  public static void main(String[] args) {
    int pewnaLiczba = 100;
    int temperatura = 10;
    int innaLiczba = -1;
    int dzienTygodnia = 3;

    boolean czyUjemna;
    boolean czyJestCieplo;
    boolean czyRozneOdZero;
    boolean czySobota;

    czyUjemna = pewnaLiczba < 0;
    czyJestCieplo = temperatura >= 20;
    czyRozneOdZero = innaLiczba != 0;
    czySobota = dzienTygodnia == 6;
  }
}

Do czterech zmiennych typu boolean przypisaliśmy wyniki porównywania kilku zmiennych do różnych wartości. Zwróćmy jeszcze raz uwagę, że do przyrównania wartości do innej wartości używamy dwóch znaków ==. Pojedynczy znak = to operator przypisania.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.