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:
{JAVA_CONSOLE}
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.");
}
{/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, "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.");
}
{/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, "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.");
{/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 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
:
{JAVA_CONSOLE}
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.");
{/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.
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é 22x (2.56 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java