While and do while statements

Pętla while jest wykorzystywana, gdzie zakładana ilość powtórzeń jest bliżej nieokreślona, ale znany jest warunek jaki musi być spełniony. Jeśli jest spełniony, wówczas instrukcja we wnętrzu pętli jest wykonywana. Jeżeli natomiast warunek jest fałszywy może się ona nie wykonać, ani razu.

public class Main {

    public static void main(String[] args) {
        int count = 1;
        while (count != 6) {
            System.out.println("Count value is" + count);
            count++;
        }

W powyższym przypadku zadeklarowaliśmy zmienną „count”  z przypisaną wartością 1. Sprawdzamy warunek, czy nie jest ona równa „6”. Faktycznie nie jest, więc instrukcja wykonuje się we wnętrzu pętli. Wyświetla się napis „Count value is” i zwiększamy zmienną „count” o 1. Następnie znów sprawdzany jest warunek, czy 2 nie równa się 6. Zgadza się, więc powtarzane są ponownie poprzednie czynności. Gdy zmienna „count” osiąga wartość 6 warunek jest fałszywy, ponieważ 6 równa się 6, pętla zostaje przerwana.

Po uruchomieniu powyższego kodu, otrzymujemy:

Count value is 1
Count value is 2
Count value is 3
Count value is 4
Count value is 5

Pętla do while – jej zaletą jest to, że pętla zawsze jest wykonana, przynajmniej jeden raz;

count = 1;
do {
    System.out.println("Count value was " + count);
    count++;
} while (count != 6);

po uruchomieniu kodu, otrzymujemy:

Count value was 1
Count value was 2
Count value was 3
Count value was 4
Count value was 5

Jeśli zapiszemy:

count = 6;
do {
    System.out.println("Count value was " + count);
    count++;
} while (count != 6);

wówczas pętla będzie wykonywana nieskończenie, ponieważ każda liczba powyżej 6 będzie spełniała warunek.

Można przerwać pętlę, zapisując break w kodzie, np:

count = 6;
do {
    System.out.println("Count value was " + count);
    count++;
    if (count >100){break;}
} while (count != 6);

Zadanie.

Utwórz metodę o nazwie isEvenNumber (z ang. czy to jest liczba parzysta), która przyjmuje parametr typu int. Jej celem jest ustalić czy argumentem przechodzącym przez metodę jest liczba parzysta czy nie. Zwróć „true” w przypadku liczby parzystej, w innym przypadku zwróć „false”.

moje rozwiązanie:

package com.wordpress.programujeodzera;

public class Main {

    public static void main(String[] args) {
        int number = 5;
        int finishNumber = 20;
        while(number <= finishNumber){
            if(!isEvenNumber(number)){
                number++;
                continue;
            }
            System.out.println("Even number " + number);
            number++;
        }
    }

    public static boolean isEvenNumber(int number) {
        if ((number % 2) == 0) {
            return true;
        } else {
            return false;
        }
    }
}

Ten kod zaczyna akurat od liczby 5 i działa do osiągnięcia liczby 20, testuje czy dana liczba jest liczbą parzystą. Jeżeli dana liczba nie jest liczbą parzystą, zwiększana jest liczba o 1 i kod sprawdza dalej ( dokonywana jest pętla). Po uruchomieniu powyższego kodu otrzymujemy zakres liczb parzystych od 6 do 20:

Even number 6
Even number 8
Even number 10
Even number 12
Even number 14
Even number 16
Even number 18
Even number 20

Process finished with exit code 0

Zadanie.

Zmodyfikuj powyższy kod z while. Spraw by przywołał wszystkie parzyste liczby i zatrzymaj działanie kodu, gdy napotka 5 i na końcu. Wyświetl całkowitą ilość liczb parzystych.

package com.wordpress.programujeodzera;

public class Main {

    public static void main(String[] args) {
        int number = 5;
        int finishNumber = 20;
        int evenNumbersFound = 0;
        while(number <= finishNumber){
            if(!isEvenNumber(number)){
                number++;
                continue;
            }


            System.out.println("Even number " + number);
            number++;
            evenNumbersFound++;
            if(evenNumbersFound >= 5){
                break;
            }
        }
        System.out.println("Total even numbers found " + evenNumbersFound);
    }

    public static boolean isEvenNumber(int number) {
        if ((number % 2) == 0) {
            return true;
        } else {
            return false;
        }
    }
}

po uruchomieniu tego kodu, wyświetla się:

Even number 6
Even number 8
Even number 10
Even number 12
Even number 14
Total even numbers found 5

Process finished with exit code 0