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.


4
Задача
Java Syntax,  нивоурок
Заключено
This age doesn't work for me…
Sometimes we all want to change our age. First, they don't want to sell you cigarettes or beer. Then your hair starts thinning and your back aches! A programmer may not have control over time, but he or she has total control over data in programs. In this task, we correct an error so that a Person object's age variable receives a different value.

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