Kontrola przepływu sterowania

Poniżej zamieszczam przykłady programów, w których pokazane jest zastosowanie instrukcji warunkowych i pętli do sterowania wykonaniem programu.

Najpierw instrukcja warunkowa ’if’:

package net.javainfo.basics;

import java.util.Scanner;

// Przykład użycia pętli warunkowych
public class IfStatement {

    public static void main(String[] args){

        int age;
        Scanner scanner = new Scanner(System.in);

        System.out.println("Podaj swój wiek: ");
        age = scanner.nextInt();

        if(age < 18){  //if traktujemy jak słowo 'jeżeli'
            System.out.printf("Masz %d lat - %s",age,"nie jesteś pełnoletni/a.");
        }
        else if (age == 18){ //w przeciwnym razie jeżeli
            System.out.println("Właśnie osiągnąłeś/aś pełnoletność.");
        }
        else{  //w przeciwnym razie
            System.out.printf("Jesteś pełnoletni/a już od %d lat", age - 18);
        }
    }
}

Kod źródłowy jest w miarę intuicyjny, niejasności opisałem w komentarzach w kodzie.

Teraz pętla nieokreślona ’while’:

package net.javainfo.basics;

//Przykład zastosowania pętli nieokreślonej ilością wykonania
public class Loop {

    public static void main(String[] args){

        int amount = 1;

        while (amount <= 3){ //dopóki ta wartość jest prawdziwa
            System.out.println(amount++);
        }

        do{ //wykonaj przynajmniej raz
            System.out.println(amount++);
        }while(amount <= 6);
    }
}

Pętla określona ’for’:

package net.javainfo.basics;

//Przykład użycia pętli określonej
public class LoopSpecified {
    public static void main(String[] args){

        System.out.println("Zaczynamy odliczanie:");
        for(int i = 10; i >= 0; --i){   //kolejno - inicjalizacja;warunek pętli; zmiana wartości licznika
            System.out.printf("%d\n",i);
        }
    }
}

Teraz pora na ’switch’ czyli pole wielokierunkowego wyboru:

package net.javainfo.basics;


import java.util.Scanner;

//Użycie instrukcji/wyrażenia switch - wyboru wielokierunkowego (4 rodzaje)
public class MultiDirectionalSelection {

    static int dayNumber;
    public static int statementWithoutPassingControl(String dayOfWeek){
        int dayNumber = switch (dayOfWeek){
            case "Poniedziałek" -> {
                yield 1;  //słowo kluczowe yield zwraca wartość i przerywa działanie
            }
            case "Wtorek" -> 2;
            default -> -1;
        };
        return dayNumber;
    }

    public static int instructionWithoutPassingControl(String dayOfWeek){
        switch(dayOfWeek){
            case "Środa" -> {return 3;}
            case "Czwartek" -> {return 4;}
            default -> {
                return -1;
            }
        }
    }

    public static int statementWithPassingControl(String dayOfWeek){
        int dayNumber = switch(dayOfWeek){
            case "Piątek" : yield 5;
            case "Sobota" : yield 6;
            default: yield -1;
        };
        return dayNumber;
    }

    public static void instructionWithPassingControl(String dayOfWeek) {
        switch (dayOfWeek) {
            case "Niedziela":
                dayNumber = 7;
            break;
            default:
               break ;
        }
    }
    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);
        String dayString;

        do {
            System.out.println("Podaj nazwę dnia tygodnia, a powiem Ci który to dzień liczbowo");

            dayString = scanner.next();
            switch(dayString) {

                case "Poniedziałek","Wtorek" -> dayNumber = statementWithoutPassingControl(dayString);
                case "Środa","Czwartek" -> dayNumber = instructionWithoutPassingControl(dayString);
                case "Piątek", "Sobota" -> dayNumber = statementWithPassingControl(dayString);
                case "Niedziela" -> instructionWithPassingControl(dayString);
                default -> dayNumber = -1;
            }
            if(dayNumber != -1)
            System.out.println(dayString + " jest to " + dayNumber + " dzień tygodnia");
        }while(dayNumber != -1);

    }
}

I na koniec przykład instrukcji przerywających przepływ sterowania:

package net.javainfo.basics;

//Przykład instrukcji przerwyających przepływ sterowania
public class BreakingInstruction {

    public static void main(String[] args){

        int n = 0;
        int[] tab = new int[21];
        boolean check = true;

        finish:  //etykieta
        while(check){

            for(int i = 0 ; i <= 20; ++i){
                n++;

                if(n == 5)
                    continue;  //przerwanie bieżącej iteracji
                if (n%2 != 0) {
                    tab[i] = n;
                }
                if(n == 11)
                    break finish; //przerwanie najbardziej zewnętrznej pętli i przejście do etykiety

            }
            check = false;
        }

        for(int i = 0; i < tab.length; ++ i){
            System.out.print(tab[i] + " ");
        }
    }
}


Opublikowano

w

przez

Komentarze

Dodaj komentarz

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