Курс

"Программирование Java"

Операторы ветвления

Условные конструкции

Одним из фундаментальных элементов многих языков программирования является оператор ветвления (условные конструкции). Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий. В зависимости от наличия конструкция в каждой ветви выделяют полный и неполный вид ветвления

В языке Java используются следующие условные конструкции: if..else и switch..case

Конструкция if/else

Выражение if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код:

int num1 = 6;
int num2 = 4;
if(num1 > num2){
    System.out.println("Первое число больше второго");
}

После ключевого слова if ставится условие. И если это условие выполняется, то срабатывает код, который помещен в далее в блоке if после фигурных скобок. В качестве условий выступает операция сравнения двух чисел.

Так как, в данном случае первое число больше второго, то выражение num1 > num2 истинно и возвращает значение true. Следовательно, управление переходит в блок кода после фигурных скобок и начинает выполнять содержащиеся там инструкции, а конкретно метод System.out.println("Первое число больше второго");. Если бы первое число оказалось бы меньше второго или равно ему, то инструкции в блоке if не выполнялись бы.

Чтобы при несоблюдении условия также выполнялись какие-либо действия, добавим блок else:

int num1 = 6;
int num2 = 4;
if(num1>num2){
    System.out.println("Первое число больше второго");
}
else{
    System.out.println("Первое число меньше второго");
}

Внутри ветви условного оператора может располагаться такая же конструкция, которая будет являться вложенной. Рассмотрим решение задачи, расположения 3-ех переменных по возрастанию:


        //Проверяем соответствие условию
        if (a > b)
            if (a > c)
                if (b > c) System.out.println(c + " " + b + " " + a);
                else System.out.println(b + " " + c + " " + a);
            else System.out.println(b + " " + a + " " + c);
        else
        if (b > c)
            if (a > c) System.out.println(c + " " + a + " " + b);
            else System.out.println(a + " " + c + " " + b);
        else System.out.println(a + " " + b + " " + c);

В условии ветвления может располагаться составное выражение (например: a > b && a > 0).

 

Конструкция switch

Конструкция switch/case аналогична конструкции if/else, так как позволяет обработать сразу несколько условий. После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase. И если совпадение найдено, то будет выполняет соответствующий блок сase. Задачу вывода на экран месяца по номеру можно решить так:

int x = in.nextInt();

switch (x) {
    case 1:
        System.out.println("Январь");
        break;
    case 2:
        System.out.println("Февраль");
        break;
    case 3:
        System.out.println("Март");
        break;
    case 4:
        System.out.println("Апрель");
        break;
    case 5:
        System.out.println("Май");
        break;
    case 6:
        System.out.println("Июнь");
        break;
    case 7:
        System.out.println("Июль");
        break;
    case 8:
        System.out.println("Август");
        break;
    case 9:
        System.out.println("Сентябрь");
        break;
    case 10:
        System.out.println("Октябрь");
        break;
    case 11:
        System.out.println("Ноябрь");
        break;
    case 12:
        System.out.println("Декабрь");
        break;
    default:
        System.out.println("Error!");
        break;
}

 

В конце блока сase ставится оператор break, чтобы избежать попадания в другие блоки. Если break не указать, по при выполнении условия, выполнится не только текущий блок, но и последующие, пока не встретится break.

Если совпадений ни в одном case найдено не будет, выполнится блок default.

 

Тернарная операция

Тернарную операция имеет следующий синтаксис:

[первый операнд - условие] ? [второй операнд] : [третий операнд]

Таким образом, в этой операции участвуют сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true, то возвращается второй операнд; если условие равно false, то третий. Например:

int x=3;
int y=2;
int z = x<y? (x+y) : (x-y);
System.out.println(z);

Результатом тернарной операции является переменная z. Сначала проверяется условие x<y. И если оно соблюдается, то z будет равно второму операнду - (x+y), иначе z будет равно третьему операнду.

Приложение

If/else

import java.util.Scanner;

 

public class Main {

 

    public static void main(String[] args) {

 

 

        //Класс Scanner используется для удобного считывания при помощи объекта in класса System

        //Класс Scanner находится в пакете java.util, поэтому необходимо помнить про import java.util.Scanner

        Scanner in = new Scanner(System.in);

 

        //Считываем числа

        int a = in.nextInt(), b = in.nextInt(), c = in.nextInt();

 

        //Проверяем соответствие условию

        if (a > b)

            if (a > c)

                if (b > c) System.out.println(c + " " + b + " " + a);

                else System.out.println(b + " " + c + " " + a);

            else System.out.println(b + " " + a + " " + c);

        else

        if (b > c)

            if (a > c) System.out.println(c + " " + a + " " + b);

            else System.out.println(a + " " + c + " " + b);

        else System.out.println(a + " " + b + " " + c);

 

 

    }

 

}

 

Switch/case

import java.util.Scanner;

 

public class Main {

 

    public static void main(String[] args) {

 

        Scanner in = new Scanner(System.in);

 

        int x = in.nextInt();

 

        switch (x) {

            case 1:

                System.out.println("Январь");

                break;

            case 2:

                System.out.println("Февраль");

                break;

            case 3:

                System.out.println("Март");

                break;

            case 4:

                System.out.println("Апрель");

                break;

            case 5:

                System.out.println("Май");

                break;

            case 6:

                System.out.println("Июнь");

                break;

            case 7:

                System.out.println("Июль");

                break;

            case 8:

                System.out.println("Август");

                break;

            case 9:

                System.out.println("Сентябрь");

                break;

            case 10:

                System.out.println("Октябрь");

                break;

            case 11:

                System.out.println("Ноябрь");

                break;

            case 12:

                System.out.println("Декабрь");

                break;

            default:

                System.out.println("Error!");

                break;

        }

 

 

    }

 

}

 

Тернарная операция

import java.util.Scanner;

 

public class Main {

 

    public static void main(String[] args) {

 

        //Тернарная операция

        // условие ? значение 1 : значение 2;

 

        Scanner sc = new Scanner(System.in);

 

        int a = sc.nextInt(), b = sc.nextInt();

 

        //находим большее из введенных

        int max = a > b ? a : b;

 

        System.out.println( max );

        System.out.println( a > b ? "a > b " : "a < b ");

 

        //проверить х > 5

        int x = sc.nextInt();

        System.out.println( x < 5 ? "NO" : "YES" );

 

 

    }

 

}

Полезный код