1. Последователност от ifтвърдения

Понякога програмата трябва да извърши много различни действия в зависимост от стойността на променлива or стойността на израз.

Да приемем, че нашата задача е нещо подобно:

  • Ако температурата е по-висока от 20градуса, тогава облечете риза
  • Ако температурата е по-висока от 10градуса и по-малка от (or равна на) 20, тогава облечете пуловер
  • Ако температурата е по-висока от 0градуса и по-малка от (or равна на) 10, тогава облечете дъждобран
  • Ако температурата е под 0градуса, тогава облечете палто.

Ето How това може да бъде представено в code:

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-elseизразите могат да бъдат вложени един в друг . Това прави възможно внедряването на доста сложна логика в програма.

Програмистите обаче обикновено пишат тази конструкция малко по-различно:

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");
}

Двата дадени примера са еквивалентни, но вторият е по-лесен за разбиране.


2. Нюанси на elseблока

Важен момент:

Ако не използвате фигурни скоби в if-elseконструкция, тогава elseпрепраща към най-близкия предишен if.

Пример:

Нашият code Как ще работи
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");
}

Ако погледнете codeа отляво, изглежда, че изходът на екрана ще бъде „Не е нужно да работите“. Но това не е така. В действителност elseблокът и изявлението „Не трябва да работите“ са свързани с второто (по-близкото) ifизявление.

В codeа отдясно свързаните ifи elseса маркирани в червено. Освен това фигурните скоби са поставени недвусмислено, като ясно показват Howви действия ще бъдат извършени. Низът, който не трябва да работите, никога не се показва, когато ageе по-голям от 60.



3. Пример за използване на if-elseизявление

Тъй като проучихме if-elseтвърдението толкова добре, нека дадем пример:

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
   }
}
Показване на минимум две числа