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í:

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 &| pomocou Pravého Alt a klávesov W a C:

Operátory and a or - Základné konštrukcie jazyka Java

Uveďme si jednoduchý príklad:

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.");
}

S tým si zatiaľ vystačíme, operátory sa pomocou zátvoriek samozrejme dajú kombinovať:

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.");
}

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:

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.");

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:

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.");

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

 

Predchádzajúci článok
Podmienky (vetvenie) v Jave
Všetky články v sekcii
Základné konštrukcie jazyka Java
Preskočiť článok
(neodporúčame)
Riešené úlohy k 8.-9. lekcii Javy
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
182 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