NOVINKA: Kurz kybernetickej bezpečnosti teraz už od 0 €. Staň sa žiadaným profesionálom. Zisti viac:
NOVINKA: Staň sa dátovým analytikom od 0 € a získaj istotu práce, lepší plat a nové kariérne možnosti. Viac informácií:

11. diel - Cyklus while v Jave

V minulej lekcii, Cyklus for v Jave, sme si v našom Java seriáli ukázali prácu s for cyklom.

V dnešnom Java tutoriále sa naučíme používať cyklus while a potom vylepšíme našu kalkulačku.

Cyklus while

Cyklus while funguje trochu inak ako cyklus for. Jednoducho opakuje príkazy v bloku, pokiaľ platí podmienka. Syntax cyklu je nasledovná:

while (condition) {
    // commands
}

Pokiaľ vám napadá, že je možné cez cyklus while urobiť aj cyklus for, máte pravdu :-) Cyklus for je vlastne špeciálny prípad cyklu while. Cyklus while sa ale používa na trochu iné veci, často máme v jeho podmienke napr. metódu vracajúcu logickú hodnotu true / false.

Príklady použitia cyklu

Poďme si urobiť niekoľko jednoduchých príkladov na precvičenie cyklu while.

Rad

Pomocou cyklu while by sme urobili číselný rad nasledovne:

int i = 1;
while (i <= 10) {
    System.out.print(i + " ");
    i++;
}

To ale nie je ideálne použitie cyklu while.

Kalkulačka

Ako ďalšiu si vezmeme našu kalkulačku z minulých lekcií a opäť ju trochu vylepšíme, konkrétne o možnosť zadať viac príkladov. Program teda hneď neskončí, ale spýta sa používateľa, či si praje spočítať ďalší príklad. Pripomeňme si pôvodnú verziu kódu (je to tá verzia s konštrukciou switch, ale pokojne použite aj tú bez nej, záleží na vás):

Scanner scanner = new Scanner(System.in);
System.out.println("Welcome to our calculator");
System.out.println("Enter the first number:");
double a = Double.parseDouble(scanner.nextLine());
System.out.println("Enter the second number:");
double b = Double.parseDouble(scanner.nextLine());
System.out.println("Choose one of the following operations:");
System.out.println("1 - addition");
System.out.println("2 - subtraction");
System.out.println("3 - multiplication");
System.out.println("4 - division");
int option = Integer.parseInt(scanner.nextLine());
double result = 0;
switch (option) {
    case 1:
        result = a + b;
        break;
    case 2:
        result = a - b;
        break;
    case 3:
        result = a * b;
        break;
    case 4:
        result = a / b;
        break;
}
if ((option > 0) && (option < 5))    {
    System.out.println("Result: " + result);
} else {
    System.out.println("Invalid option");
}

System.out.println("Thank you for using our calculator.");

Teraz budeme chcieť celý kód vložiť do cyklu while. Našou podmienkou bude, že používateľ zadá yes, budeme teda kontrolovať obsah premennej goOn. Spočiatku bude táto premenná nastavená na hodnotu yes, aby sa program vôbec spustil, potom do premennej necháme načítať používateľovu voľbu.

S takouto úpravou nám pomôže Copilot. Zadáme mu napríklad nasledujúci prompt: "Kód kalkulačky sa spustí len raz. Pridaj preto celý kód do bloku while. Kým používateľ odpovedá na otázku, či si praje pokračovať "yes", kód bude ďalej pokračovať.".

Výstup od Copilota bude vyzerať podobne ako nižšie:

Scanner scanner = new Scanner(System.in);

System.out.println("Welcome to our calculator");
String goOn = "yes";
while (goOn.equals("yes")) {
    System.out.println("Enter the first number:");
    double a = Double.parseDouble(scanner.nextLine());
    System.out.println("Enter the second number:");
    double b = Double.parseDouble(scanner.nextLine());
    System.out.println("Choose one of the following operations:");
    System.out.println("1 - addition");
    System.out.println("2 - subtraction");
    System.out.println("3 - multiplication");
    System.out.println("4 - division");
    int option = Integer.parseInt(scanner.nextLine());
    double result = 0;
    switch (option) {
        case 1:
            result = a + b;
            break;
        case 2:
            result = a - b;
            break;
        case 3:
            result = a * b;
            break;
        case 4:
            result = a / b;
            break;
    }
    if ((option > 0) && (option < 5)) {
        System.out.println("Result: " + result);
    } else {
        System.out.println("Invalid option");
    }
    System.out.println("Would you like to make another calculation? [yes/no]");
    goOn = scanner.nextLine();
}
System.out.println("Thank you for using our calculator.");

Výstup AI sa môže líšiť. Názvy premenných môžu byť iné, podmienka cyklu môže byť napísaná inak alebo sa môže mierne líšiť celá štruktúra programu. To je v poriadku. Dôležité je, aby program fungoval správne, cyklus sa opakoval podľa vstupu používateľa a my sme rozumeli tomu, čo kód robí.

Výstup programu:

Konzolová aplikácia
Welcome to our calculator
Enter the first number:
12
Enter the second number:
128
Choose one of the following operations:
1 - addition
2 - subtraction
3 - multiplication
4 - division
1
Result: 140
Would you like to make another calculation? [yes/no]
yes
Enter the first number:
-10.5
Enter the second number:
10.5
Choose one of the following operations:
1 - addition
2 - subtraction
3 - multiplication
4 - division
1
Result: 0
Would you like to make another calculation? [yes/no]
no
Thank you for using our calculator.

Našu aplikáciu je teraz možné používať viackrát a je už takmer hotová. Už toho vieme celkom dosť, začína to byť zábava, však? :)

Zhrnutie lekcie

Cyklus while opakuje príkazy tak dlho, kým platí zadaná podmienka. Hodí sa hlavne vtedy, keď vopred nevieme, koľkokrát sa má určitá časť programu opakovať, napríklad keď program pokračuje podľa odpovede používateľa. V ukážke sa pomocou cyklu while vylepšila kalkulačka, aby po výpočte neskončila hneď, ale spýtala sa, či má pokračovať. Kým používateľ zadáva yes, kalkulačka počíta ďalšie príklady. Keď zadá niečo iné, program skončí.

V nasledujúcom cvičení, Riešené úlohy k 10.-11. lekcii Javy, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 55x (6.76 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Cyklus for v Jave
Všetky články v sekcii
Základné konštrukcie jazyka Java
Preskočiť článok
(neodporúčame)
Riešené úlohy k 10.-11. lekcii Javy
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
181 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity