Základní rozhodovací strukturou v Javě je rozhodovací struktura If .. else. Tato struktura zajišťuje podmínečné provedení skupiny příkazů závisející na hodnotě výrazu.
if (podmínka) { [příkazy] } [else { [else_příkazy] } ]
podmínka | ||
Povinná. Může se skládat z číselného nebo řetězcového výrazu, vyhodnotitelného jako True nebo False. |
||
příkazy | ||
Povinné - jeden nebo více příkazů. Vykonají se, když je podmínka vyhodnocena jako True. |
||
else_příkazy | ||
Volitelné. Jeden nebo více příkazů, které se provedou v případě, kdy podmínka podmínka není vyhodnocena jako True. |
Použití podmíněného výrazu je velice jednoduché, předpokládejme například, že potřebujete rozdělit uživatele do tří skupin podle věku. V první skupině budou uživatelé mladší 18 let, v druhé skupině uživatelé starší než 18 let. Uživatelé, kterým je právě 18 let budou mít zvláštní kategorii. Podmíněný výraz bude složený následujícího tvaru:
if (vek < 18) vekova_kategorie = "dite"; else if (vek > 18) vekova_kategorie = "dospely"; else vekova_kategorie = "osmnactilety";
Podmíněný ternární operátor umožňuje jednoduchým způsobem otestovat booleovský výraz a podle výsledku uskuteční jeden ze dvou příkazů.
(proměnná) = (booleovský výraz) ? (operand_true) : (operand_false);
booleovský výraz | ||
Testovaný výraz, může nabývat hodnot true nebo false. | ||
operand_true | ||
Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako true. |
||
operand_false | ||
Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako false. |
V následujícím příkladě použijeme podmíněný ternární výraz k vytvoření negace výrazu. Počáteční hodnota v proměnné logicka je true. V ternárním výrazu je testovaný výraz vyhodnocen jako true. Proto ternární výraz vrátí první hodnotu, která se rovná false. Vrácená hodnota je poté přiřazena do proměnné logicka.
boolean logicka = true; logicka = (logicka) ? false : true;
Příkaz switch umožňuje programu Java otestovat jestli jedna proměnná nabývá více různých hodnot. Formát příkazu switch je totožný s formátem téhož příkazu v C/C++.
switch (testovaný_výraz) { [case výraz : [příkazy-n;] [break;] ] [default : [default_prikazy;] [break;] ] }
testovaný_výraz | ||
Povinné. Může se skládat z libovolného číselného nebo řetězcového výrazu. | ||
výraz | ||
Povinné, vyskytne-li se klauzule case. výraz představuje hodnoty, s kterými se porovnává testovaný_výraz. Formát položky výraz je následujícím:
|
||
příkazy-n | ||
Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz odpovídá libovolné části ze výraz. Skupina příkazů je zakončena příkazem break; | ||
default | ||
Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz neodpovídá žádné klauzuli z case. |
V následujícím příkladě určí příkaz switch hodnotu cena_vozu v závislosti na hodnote stáří vozu. Je-li stáří vozu rovné 2 nebo 3 rokům bude cena vozu stejná. Je-li auto starší než 5 let je cena_vozu rovna 1000.
switch (stari_vozu) { case 1 : cena_vozu = 300000; break; case 2 : case 3 : cena_vozu = 200000; break; case 4 : cena_vozu = 100000; break; case 5 : cena_vozu = 10000; break; default : cena_vozu = 1000; break; }
V příkladě si zejména všimněte použití příkazu break. U hodnoty stari_vozu = 2 není příkaz break uveden, pokud bude hodnota vybrána, budou se provádět příkazy až do doby než narazí program na příkaz break. To znamená přiřadí se hodnota cena_vozu = 200000.