1. Succesiunea ifafirmațiilor

Uneori, un program trebuie să efectueze multe acțiuni diferite, în funcție de valoarea unei variabile sau de valoarea unei expresii.

Să presupunem că sarcina noastră este cam așa:

  • Dacă temperatura este mai mare de 20grade, atunci puneți o cămașă
  • Dacă temperatura este mai mare de 10grade și mai mică decât (sau egală cu) 20, atunci îmbrăcați un pulover
  • Dacă temperatura este mai mare de 0grade și mai mică decât (sau egală cu) 10, atunci îmbrăcați o pelerină de ploaie
  • Dacă temperatura este mai mică de 0grade, atunci puneți o haină.

Iată cum poate fi reprezentat acest lucru în cod:

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else // Here the temperature is less than (or equal to) 20
{
   if (temperature > 10)
      System.out.println("put on a sweater");
   else // Here the temperature is less than (or equal to) 10
   {
      if (temperature > 0)
         System.out.println("put on a raincoat");
      else // Here the temperature is less than 0
         System.out.println("put on a coat");
   }
}

If-elseinstrucțiunile pot fi imbricate unele în altele. Acest lucru face posibilă implementarea unei logici destul de complexe într-un program.

Dar exemplul de mai sus este interesant și prin faptul că putem face codul puțin mai simplu, omițând acoladele:

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else // Here the temperature is less than (or equal to) 20
   if (temperature > 10)
      System.out.println("put on a sweater");
   else // Here the temperature is less than (or equal to) 10
      if (temperature > 0)
         System.out.println("put on a raincoat");
      else // Here the temperature is less than 0
         System.out.println("put on a coat");

Cu toate acestea, programatorii scriu de obicei acest construct puțin diferit:

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else if (temperature > 10) // Here the temperature is less than (or equal to) 20
   System.out.println("put on a sweater");
else if (temperature > 0) // Here the temperature is less than (or equal to) 10
   System.out.println("put on a raincoat");
else // Here the temperature is less than 0
   System.out.println("put on a coat");

Toate aceste trei exemple sunt echivalente.


2. Nuanțe ale elseblocului

Un punct important:

Dacă nu folosiți acolade într-o if-elseconstrucție, atunci se elsereferă la cel mai apropiat if.

Exemplu:

Codul nostru Cum va funcționa
int age = 65;

if (age < 60)
   if (age > 20)
      System.out.println("You must work");
else
   System.out.println("You don't have to work");
int age = 65;

if (age < 60)
{
   if (age > 20)
     System.out.println("You must work");
   else
     System.out.println("You don't have to work");
}

Dacă te uiți la codul din stânga, se pare că ieșirea ecranului va fi „Nu trebuie să lucrezi”. Dar nu este cazul. În realitate, elseblocul și instrucțiunea „Nu trebuie să lucrezi” sunt asociate cu a doua ifdeclarație (cea mai apropiată).

În codul din dreapta, asociatele ifși elsesunt evidențiate cu roșu. În plus, bretele sunt plasate fără ambiguitate, arătând clar ce acțiuni vor fi efectuate. Nu se afișează niciodată șirul Tu nu trebuie să lucrezi când ageeste mai mare decât 60?



3. Exemplu de utilizare a unei if-elsedeclarații

Deoarece am explorat if-elseatât de bine afirmația, să dăm un exemplu:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
     Scanner console = new Scanner(System.in); // Create a Scanner object
     int a = console.nextInt(); // Read the first number from the keyboard
     int b = console.nextInt(); // Read the second number from the keyboard
     if (a < b)                   // If a is less than b
       System.out.println(a);     // we display a
     else                         // otherwise
       System.out.println(b);     // we display b
   }
}
Afișarea minimului de două numere