IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

10. 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, "Windows-1250");
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 vložíme takmer celý kód 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 nej necháme načítať voľbu používateľa:

Scanner scanner = new Scanner(System.in, "Windows-1250");

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šimnite si, že premenné dátového typu String porovnávame pomocou metódy equals(), nie pomocou operátora == ! Je to dané tým, že String je referenčný dátový typ. Metóda equals() teda v našom prípade zistí, či sa premenná goOn rovná textovému reťazcu yes.

Podmienka ("Text" == "Text") je zle, musíme napísať ("Text".equals("Text")). V kapitole o objektovo orientovanom programovaní pochopíme prečo.

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? :)

V nasledujúcom cvičení, Riešené úlohy k 9.-10. 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é 9x (2.62 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 9.-10. lekcii Javy
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
36 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