9. diel - Podmienky (vetvenie) druhýkrát - Konštrukcia switch v Jave
V minulej lekcii, Podmienky (vetvenie) v Jave, sme si vysvetlili podmienky.
V dnešnom Java tutoriále sa naučíme skladať podmienky za pomoci
logických operátorov. Následne sa pozrieme na konštrukciu
switch a vytvoríme jednoduchú kalkulačku.
Skladanie podmienok
Podmienky je možné skladať, a to pomocou dvoch základných logických operátorov:
| Operátor | C-like zápis |
|---|---|
| A zároveň | && |
| Alebo | || |
Na slovenskej klávesnici píšeme znaky &
a | pomocou Pravého Alt a klávesov W a
C:

Uveďme si jednoduchý príklad:
{JAVA_CONSOLE}
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number between 10-20: ");
int number = Integer.parseInt(scanner.nextLine());
if ((number >= 10) && (number <= 20)) {
System.out.println("The condition has been met.");
} else {
System.out.println("You did it wrong.");
}
{/JAVA_CONSOLE}
S tým si zatiaľ vystačíme, operátory sa pomocou zátvoriek samozrejme dajú kombinovať:
{JAVA_CONSOLE}
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number between 10-20 or 30-40:");
int number = Integer.parseInt(scanner.nextLine());
if (((number >= 10) && (number <= 20)) || ((number >= 30) && (number <= 40))) {
System.out.println("The condition has been met.");
} else {
System.out.println("You did it wrong.");
}
{/JAVA_CONSOLE}
Switch
Konštrukcia switch je prevzatá z jazyka C
(ako väčšina gramatiky Javy). Umožňuje nám zjednodušiť (relatívne)
zápis viacerých podmienok pod sebou. Spomeňme si na našu kalkulačku v
prvých lekciách, ktorá načítala 2 čísla a vypočítala všetky 4
operácie. Teraz si ale budeme chcieť zvoliť, ktorú operáciu chceme. Bez
konštrukcie switch by sme napísali kód podobný tomuto:
{JAVA_CONSOLE}
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;
if (option == 1) {
result = a + b;
} else if (option == 2) {
result = a - b;
} else if (option == 3) {
result = a * b;
} else if (option == 4) {
result = a / b;
}
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.");
{/JAVA_CONSOLE}
Po spustení kalkulačky a zadaní hodnôt bude výstup vyzerať takto:
Konzolová aplikácia
Welcome to our calculator
Enter the first number:
3.14
Enter the second number:
2.72
Choose one of the following operations:
1 - addition
2 - subtraction
3 - multiplication
4 - division
2
Result: 0.42
Thank you for using our calculator.
Všimnite si, že sme premennú result deklarovali na
začiatku, len tak do nej môžeme potom priraďovať. Keby sme ju
deklarovali pri každom priradení, Java by kód neskompilovala a vyhodila by
chybu redeklarácie premennej. Dôležité je tiež premennej
result priradiť nejakú východiskovú hodnotu, v našom
prípade nulu, inak by nám Java vynadala, že sa snažíme vypísať premennú,
ktorá nebola jednoznačne inicializovaná. Premenná môže byť deklarovaná
(založená v pamäti) vždy len raz.
Ďalšia vychytávka je kontrola správnosti voľby. Program by v tomto
prípade fungoval rovnako aj bez tých else, ale načo sa ďalej
pýtať, keď už máme výsledok.
Teraz si skúsime vytvoriť ten istý kód pomocou konštrukcie
switch. Využijeme na to Copilota, ktorému zadáme prompt:
"Nahraď konštrukcie if-else v kalkulačke konštrukciou switch.".
Copilot nám navrhne riešenie podobné tomuto:
{JAVA_CONSOLE}
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.");
{/JAVA_CONSOLE}
Vidíme, že kód je trochu prehľadnejší. Ak by sme
potrebovali v nejakej vetve switch spustiť viac príkazov,
prekvapivo ich nebudeme písať do bloku, ale rovno pod seba. Blok
{} nám tu nahrádza príkaz break, ktorý spôsobí
vyskočenie z celej konštrukcie switch. Konštrukcia
switch môže namiesto možnosti case x: obsahovať
ešte možnosť default:, ktorá sa vykoná v prípade, že nebude
platiť žiadny case.
Je len na vás, či budete konštrukciu switch používať,
všeobecne sa oplatí len pri väčšom množstve príkazov a vždy ide
nahradiť sekvenciou if a else. Nezabúdajte na
kľúčové slovo break. Konštrukcia switch je v Jave
podporovaná aj pre hodnoty premennej String, a to od Javy 7.
Zhrnutie lekcie
Podmienky môžeme v Jave spájať pomocou operátorov
&& pre "a zároveň" a || pre "alebo". Keď
máme viac možností, je často prehľadnejšie použiť konštrukciu
switch namiesto dlhého radu if a
else if. V kalkulačke sme podľa voľby používateľa vykonali
sčítanie, odčítanie, násobenie alebo delenie. Premenná na uloženie
výsledku musí byť vytvorená len raz a musí mať počiatočnú hodnotu. Vo
switch je potrebné používať break, aby program
nepokračoval ďalej do ďalších vetiev.
V nasledujúcom cvičení, Riešené úlohy k 8.-9. 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é 62x (6.72 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

David sa informačné technológie naučil na