Decision-making statements

Intro

Problem

  • Последовательное (линейное) выполнение программы (алгоритма) позволяет решать ограниченный круг задач.

Solution

  • Использование конструкций позволяющих изменять последовательность выполнение в зависимости от условия (condition)

Control Flow Statements

Statements

Control Flow Statements

Control Flow Statements

Control Flow Statements

if statement

Block schema

<code>if</code> statement

Syntax

if (condition) {
    // statements
}

Syntax

if (condition)
    // ONE statement
// statement AFTER

But not recommend

Example

int number = 10;
// checks if number is greater than 0
if (number > 0) {
    System.out.println("The number is positive.");
}
System.out.println("Statement outside if block");
The number is positive.
Statement outside if block;

Example

// create a string variable
String language = "Java";
// if statement
if (language == "Java") {
    System.out.println("Best Programming Language");
}
Best Programming Language

Example

// create a string variable
String language = "Java";
// if statement
if (language == "Java")
    System.out.println("Best Programming Language");

But not recommend

if-else statement

Block schema

<code>if…​else</code> statement

Syntax

if (condition) {
    // statements
} else {
    // statements
}

Syntax

if (condition)
    // ONE statement
else
    // ONE statement
// statement AFTER

But not recommend

Example

int number = 10;
// checks if number is greater than 0
if (number > 0) {
    System.out.println("The number is positive.");
} else { // execute this block if number is not greater than 0
    System.out.println("The number is not positive.");
}
System.out.println("Statement outside if...else block");
The number is positive.
Statement outside if...else block

if-else if-else statement

Block schema

<code>if-else if-else</code> statement

Syntax

if (condition1) {
    // statements
} else if(condition2) {
    // statements
} else if (condition3) {
    // statements
} else {
    // statements
}

Example

int number = 0;
// checks if number is greater than 0
if (number > 0) {
    System.out.println("The number is positive.");
} else if (number < 0) { // checks if number is less than 0
    System.out.println("The number is negative.");
} else { // if both condition is false
    System.out.println("The number is 0.");
}
The number is 0.

Example

int number = 0;
// checks if number is greater than 0
if (number > 0)
    System.out.println("The number is positive.");
else if (number < 0) // checks if number is less than 0
    System.out.println("The number is negative.");
else // if both condition is false
    System.out.println("The number is 0.");

But not recommend

Nested if-else statement

Block schema

Nested <code>if-else</code> statement

Syntax

if (condition1) {
    // statements
} else {
    // statements
    if (condition2) {
        // statements
    } else {
        // statements
    }
    // statements
}

Example

// declaring double type variables
double n1 = -1.0;
double n2 = 4.5;
double n3 = -5.3;
double largest;

if (n1 >= n2) { // checks if n1 is greater than or equal to n2
    // checks if n1 is greater than or equal to n3
    if (n1 >= n3) { // if...else statement inside the if block
        largest = n1;
    } else {
        largest = n3;
    }
} else { // if..else statement inside else block
    // checks if n2 is greater than or equal to n3
    if (n2 >= n3) {
        largest = n2;
    } else {
        largest = n3;
    }
}
System.out.println("Largest Number: " + largest);
Largest Number: 4.5

Ternary Operator

Ternary Operator (Short hand if-else)

Ternary Operator

Syntax

condition ? expressionTrue : expressionFalse
(condition) ? expressionTrue : expressionFalse

Ternary Operator

Ternary Operator

Syntax

variable = (condition) ? expressionTrue : expressionFalse;
variable = (condition)
        ? expressionTrue
        : expressionFalse;

Example

int time = 20;
if (time < 18) {
    System.out.println("Good day.");
} else {
    System.out.println("Good evening.");
}

Example

int time = 20;
String result = (time < 18)
    ? "Good day."
    : "Good evening.";
System.out.println(result);

switch statement

Block schema

<code>switch</code> statement

Syntax

switch (expression) {
    case exp1:
        // statements
        break;
    // ...
    case expN:
        // statements
        break;
    default:
        // statements
}

Syntax (Java 7+)

  • До Java 7: в качестве результата для Expression могли быть типы данных byte, short, char, int, Enums.

  • C Java 7: в качестве результата для Expression стали ещё допустимы типы данных Byte, Short, Character, Integer, String

Example

int number = 44;
String size;
// switch statement to check size
switch (number) {
    case 29:
        size = "Small";
        break;
    case 42:
        size = "Medium";
        break;
    case 44:
        size = "Large";
        break;
    case 48:
        size = "Extra Large";
        break;
    default:
        size = "Unknown";
        break;
}
System.out.println("Size: " + size);
Size: Large

Example

int number = 30;
String size;
switch (number) {
    case 29:
    case 30:
    case 31:
        size = "Small";
        break;
    case 42:
    case 43:
        size = "Medium";
        break;
    case 44:
    case 45:
    case 46:
        size = "Large";
        break;
    case 48:
        size = "Extra Large";
        break;
    default:
        size = "Unknown";
        break;
}
System.out.println("Size: " + size);
Size: Small

break statement in switch

Example: strange behavior

int expression = 2;
// switch statement to check size
switch (expression) {
    case 1:
        System.out.println("Case 1");
    case 2: // matching case
        System.out.println("Case 2");
    case 3:
        System.out.println("Case 3");
    default:
        System.out.println("Default case");
}
Case 2
Case 3
Default case

Total

  • if statement

    • Когда необходимо работать с диапазонами или сложными условиями

  • ternary operator

    • Когда результат необходимо сразу же использовать в выражении

  • switch statement

    • Когда известны все возможные варианты и их количество конечно

    • Стоит подумать о другом решении, когда case становится больше 10