NOVINKA: Kurz kybernetické bezpečnosti s akreditací MŠMT, nyní již od 0 Kč. Staň se žádaným profesionálem. Zjisti více:
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 11 - Cyklus while v Javě

V minulé lekci, Cyklus for v Javě, jsme si v našem Java seriálu ukázali práci s for cyklem.

V dnešním Java tutoriálu se naučíme používat cyklus while a poté vylepšíme program kalkulačky.

Cyklus while

Cyklus while funguje trochu jinak než cyklus for. Jednoduše opakuje příkazy v bloku, dokud platí podmínka. Syntaxe cyklu je následující:

while (podminka) {
    // příkazy
}

Pokud vás napadá, že prostřednictvím cyklu while lze udělat i cyklus for, máte pravdu :) Cyklus for je vlastně speciální případ cyklu while. Cyklus while se ale používá na trochu jiné věci, neboť v jeho podmínce často máme např. metodu vracející logickou hodnotu true/false.

Příklady použití cyklu

Pojďme si udělat několik jednoduchých příkladů na procvičení cyklu while.

Řada

Číselnou řadu bychom pomocí cyklu while udělali následovně:

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

To ale není ideální použití cyklu while.

Kalkulačka

Jako další příklad si vezmeme naši kalkulačku z minulých lekcí a opět ji trochu vylepšíme, konkrétně o možnost zadat více příkladů. Program tedy hned neskončí, ale zeptá se uživatele, zda si přeje spočítat další příklad. Připomeňme si původní verzi kódu (tedy tu s konstrukcí switch, ale klidně můžeme použít i verzi bez této konstrukce, záleží na nás):

Scanner scanner = new Scanner(System.in);
System.out.println("Vítejte v kalkulačce");
System.out.println("Zadejte první číslo:");
double a = Double.parseDouble(scanner.nextLine());
System.out.println("Zadejte druhé číslo:");
double b = Double.parseDouble(scanner.nextLine());
System.out.println("Zvolte si operaci:");
System.out.println("1 - sčítání");
System.out.println("2 - odčítání");
System.out.println("3 - násobení");
System.out.println("4 - dělení");
int volba = Integer.parseInt(scanner.nextLine());
double vysledek = 0;
switch (volba) {
    case 1:
        vysledek = a + b;
        break;
    case 2:
        vysledek = a - b;
        break;
    case 3:
        vysledek = a * b;
        break;
    case 4:
        vysledek = a / b;
        break;
}
if ((volba > 0) && (volba < 5)) {
        System.out.println("Výsledek: " + vysledek);
} else {
        System.out.println("Neplatná volba");
}
System.out.println("Děkuji za použití kalkulačky.");

Nyní budeme chtít celý kód vložit do cyklu while. Naší podmínkou bude, že uživatel zadá ano, budeme tedy kontrolovat obsah proměnné pokracovat. Zpočátku bude tato proměnná nastavena na hodnotu ano, aby se program vůbec spustil, poté do proměnné necháme načíst uživatelovu volbu.

S takovou úpravou nám pomůže Copilot. Zadáme mu například následující prompt: "Kód kalkulačky se spustí jen jednou. Přidej proto celý kód do bloku while. Dokud uživatel odpovídá na otázku zda si přeje pokračovat "ano", kód bude dále pokračovat.".

Výstup od Copilota bude vypadat podobně jako níže:

Scanner scanner = new Scanner(System.in);

System.out.println("Vítejte v kalkulačce");
String pokracovat = "ano";
while (pokracovat.equals("ano")) {
    System.out.println("Zadejte první číslo:");
    double a = Double.parseDouble(scanner.nextLine());
    System.out.println("Zadejte druhé číslo:");
    double b = Double.parseDouble(scanner.nextLine());
    System.out.println("Zvolte si operaci:");
    System.out.println("1 - sčítání");
    System.out.println("2 - odčítání");
    System.out.println("3 - násobení");
    System.out.println("4 - dělení");
    int volba = Integer.parseInt(scanner.nextLine());
    double vysledek = 0;
    switch (volba) {
        case 1:
                vysledek = a + b;
                break;
        case 2:
                vysledek = a - b;
                break;
        case 3:
                vysledek = a * b;
                break;
        case 4:
                vysledek = a / b;
                break;
    }
    if ((volba > 0) && (volba < 5)) {
        System.out.println("Výsledek: " + vysledek);
    } else {
        System.out.println("Neplatná volba");
    }
    System.out.println("Přejete si zadat další příklad? [ano/ne]");
    pokracovat = scanner.nextLine();
}
System.out.println("Děkuji za použití kalkulačky.");

Výstup AI se může lišit. Názvy proměnných mohou být jiné, podmínka cyklu může být napsaná jinak a nebo se může mírně lišit celá struktura programu. To je v pořádku. Důležité je, aby program fungoval správně, cyklus se opakoval podle vstupu uživatele a my jsme rozuměli tomu, co kód dělá.

Výstup programu:

Konzolová aplikace
Vítejte v kalkulačce
Zadejte první číslo:
12
Zadejte druhé číslo:
128
Zvolte si operaci:
1 - sčítání
2 - odčítání
3 - násobení
4 - dělení
1
Výsledek: 140
Přejete si zadat další příklad? [ano/ne]
ano
Zadejte první číslo:
-10.5
Zadejte druhé číslo:

Naši aplikaci lze nyní používat vícekrát a je již téměř hotová. Již toho umíme docela dost, začíná to být zábava, že? :)

V následujícím cvičení, Řešené úlohy k 10.-11. lekci Javy, si procvičíme nabyté zkušenosti z předchozích lekcí.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 297x (10.27 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Předchozí článek
Cyklus for v Javě
Všechny články v sekci
Základní konstrukce jazyka Java
Přeskočit článek
(nedoporučujeme)
Řešené úlohy k 10.-11. lekci Javy
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
926 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity