Structura Condiţională. If
Există momente în cod în care vrem să executăm doar o parte din acesta, în funcţie de anumite condiţii. Putem face acest lucru folosind structura condiţională if
.
Aceasta este folosită pentru a verifica dacă o condiţie este adevarată. Sintaxa de bază este următoarea:
if (conditie) { instructiuni; }
Unde:
- condiţie – valoare booleană
- instrucţiuni – oricât de multe instrucţiuni executate
{ }
– acoladele ce delimitează blocul de instrucțiuni; sunt opţionale în cazul în care există o singură instrucţiune
Instrucţiunile vor fi executate doar dacă condiţia are valoarea de adevăr true
.
public class WhatIf { public static void main(String[] args) { int people = 20; int cats = 30; int dogs = 15; if (people < cats) { System.out.println("Too many cats! The world is doomed!"); } if (people > cats) { System.out.println("Not many cats! The world is saved!"); } if (people < dogs) { System.out.println("The world is drooled on!"); } if (people > dogs) { System.out.println("The world is dry!"); } dogs += 5; if (people >= dogs) { System.out.println("People are greater than or equal to dogs."); } if (people <= dogs) { System.out.println("People are less than or equal to dogs."); } if (people == dogs) { System.out.println("People are dogs."); } } }
Atunci când condiţia de la if
este falsă, putem avea alt set de instrucţiuni pe care îl vom executa cu clauza else
. Mai mult, se pot face verificări succesive, astfel încât să executăm doar instrucţiunile potrivite pentru o anumită condiţie.
Structura:
if (condiție) { // bloc de instrucțiuni } else if (altaConditie) { // bloc de instrucțiuni } else { // bloc de instrucțiuni // clauza else simpla nu are conditie, ea se va executa daca // conditiile de la clauzele if de deasupra returnează false }
Mai jos ai 2 exemple în care se foloseşte un if
cu un else
şi mai multe clauze else if
pentru verificarea succesivă condiţiilor. Verificarea se va opri la primul else if
care este adevărat. Dacă nicio condiţie nu este adevărată, se vor executa instrucţiunile din clauza else
, doar dacă aceasta există.
int k = 24; if (k < 0) { System.out.println("Numarul este negativ."); } else { System.out.println("Numarul este pozitiv."); }
int weekday = 2; String result = ""; if (weekday == 1) { result = "Luni"; } else if (weekday == 2) { result = "Marti"; } else if (weekday == 3) { result = "Miercuri"; } else { result = "Alta zi"; } System.out.println("Ziua aleasa este " + result);
Operatorul ternar
Operatorul ternar este o formă prescurtată pentru if-else
. Sintaxa foloseşte simbolurile ?
şi :
astfel:
rezultat = evaluareConditie ? valoare if conditie : valoare else
Exemple:
int valoareMaxima = x > y ? x : y; String ziuaSaptamanii = (zi == 7 || zi == 6) ? "Duminica" : "zi de lucru";Un alt avantaj al operatorului ternar este că poate fi folosit direct în alte expresii:
System.out.println( "Daca ai " + varsta + " ani, " + (varsta < 18 ? "nu ai dreptul sa votezi" : "ai dreptul sa votezi") );
Exerciţii
1. Creează un program care cere vârsta de la tastatură. În funcţie de vârsta introdusă, să se afişeze un mesaj dacă utilizatorul este minor sau nu.
2. Creează un program care să afişeze unul din următoarele mesaje pentru o vârstă introdusă de la tastatură. Testează programul cu toate variantele.
- vârsta e mai mică ca 16, scrie "Nu poti conduce."
- vârsta e mai mică ca 18, scrie "Nu poti vota."
- vârsta e mai mică ca 25, scrie "Nu poti inchiria masini."
- vârsta e 25 sau mai mare, scrie "Poti sa faci orice este legal."
3. Introdu un număr între 1 şi 7 de la tastatură. Afişează denumirea zilei corespuzătoare numelui introdus (1 – Luni, 2 – Marti, etc.)
4. Se citesc 2 şiruri de caractere de la tastatură. Să se compare şi să se afişeze dacă sunt egale sau nu. Atenţie, comparaţia între şiruri de caractere NU se face cu operatorul ==
!
5. Scrie câte o metodă pentru rezolvarea fiecărei subprobleme din enunţurile de mai sus: citirea vârstei, verificarea vârstei, citirea zilei, citirea unui şir de caractere, etc.