La forma més senzilla d'executar un tros de programa si es compleix una condició és emprar l'estructura if. En el format més simple, en una línia, el que hi ha després del parèntesi només s'executa si es compleix la condició.
... if(condició) ... ...
Aquesta forma és poc pràctica i no serveix si hi ha diverses accions a realitzar que ocupin més d'una línia.
El més habitual és que fem servir claus per indicar quines línies queden dins de la part condicionada.
...
if(condició){
...
}
...
La clàusula else ens permet posar una alternativa per quan no es compleix la condició.
...
if(condició){
...
} else {
...
}
...
Es poden encadenar clàusules if i else, per aconseguir abastar totes les opcions que siguin necessàries.
...
if(condició 1){
...
} else if(condició 2){
...
} else {
...
}
...
Hi ha una manera compacta, anomenada operador ternari, de posar una condició que, segons si es compleix o no, fa accions diferents. L'estructura d'aquest operador és la següent:
... (condició) ? acció si es compleix : acció si no es compleix; ...
Per exemple, aquest tros de programa:
...
(a == b) ? print("Iguals") : print("Diferents");
...
fa el mateix que aquest:
...
if(a == b){
print("Iguals");
} else {
print("Diferents");
}
...
L'operador ternari també es pot fer servir per assignar un valor (de qualsevol tipus) a una variable. L'estructura podria ser:
... resultat = (condició) ? valor si es compleix : valor si no es compleix; ...
Per exemple, aquest tros de programa:
... int m = (a == b) ? 1 : 0; ...
fa el mateix que aquest:
...
int m;
if(a == b){
m = 1;
} else {
m = 0;
}
...
Quan una variable (de qualsevol tipus) pot tenir diversos valors i cal fer una cosa diferent segons quin sigui, és més pràctic emprar la instrucció switch. La seva estructura seria la següent:
...
switch(variable){
case valor 1:
acció si és valor 1;
case valor 2:
acció si és valor 2;
...
default:
acció si no és cap dels valors indicats;
}
...
La clàusula default no és obligatòria però sí recomanada.
Per exemple:
...
switch(diaText){
case 'Dilluns':
dia = 1;
festiu = false;
case 'Dimarts':
dia = 2;
festiu = false;
...
case 'Diumenge':
dia = 7;
festiu = true;
default:
print("Dia no vàlid");
}
...
Si, per algun motiu, deixem un case buit, ens executarà el que correspon al següent. Per evitar-ho, caldrà posar-hi un break, per tal que surti del switch.
...
switch(diaText){
case 'Dilluns':
break;
case 'Dimarts':
dia = 2;
festiu = false;
...
case 'Diumenge':
dia = 7;
festiu = true;
default:
print("Dia no vàlid");
}
...
Les instruccions switch també poden fer servir comparacions en lloc de mirar valors exactes.
...
String ttt = "";
switch (param){
case <0:
ttt = "negatiu";
case ==0:
ttt = "zero";
case <10:
ttt = "menor que 10";
default:
ttt = "major o igual que 10";
}
...
Hi ha una manera compacta de fer un switch que és molt útil quan s'empra per retornar el resultat d'una funció. Aquest exemple ho mostra:
...
String retornaText(int param){
return switch(param){
<0 => "negatiu",
==0 => "zero",
<10 => "menor que 10",
_ => "major o igual que 10" // Correspon al valor per defecte
};
}
...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.