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ě:
{JAVA_CONSOLE}
int i = 1;
while (i <= 10) {
System.out.print(i + " ");
i++;
}
{/JAVA_CONSOLE}
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):
{JAVA_CONSOLE}
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.");
{/JAVA_CONSOLE}
Nyní vložíme téměř celý kód 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:
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šimněme si, že proměnné datového typu String
porovnáváme pomocí metody equals()
, nikoli pomocí operátoru
==
! Je to dáno tím, že String
je
referenční datový typ. Metoda equals()
tedy v
našem případě zjistí, zda se proměnná pokracovat
rovná
textovému řetězci ano
.
Podmínka ("Text" == "Text")
je špatně,
musíme psát ("Text".equals("Text"))
. V kapitole o objektově
orientovaném programování pochopíme proč.
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 262x (21.16 kB)
Aplikace je včetně zdrojových kódů v jazyce Java