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

8. 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 ||

Uveďme si jednoduchý príklad:

Scanner scanner = new Scanner(System.in, "Windows-1250");
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, "Windows-1250");
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, "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;
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 chybu redeklarácie premennej. Dôležité je tiež priradiť výsledku nejakú východiskovú hodnotu, tu nula, 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 napísať ten istý kód pomocou konštrukcie switch:

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

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.

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