Перейти к основному содержимому

Структуры управления в Java

· 4 мин. чтения

Упражнение: Сложение двух чисел

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

ANDROMEDA

1. Обзор

В самом простом смысле программа представляет собой список инструкций. Управляющие структуры — это программные блоки, которые могут изменить путь, по которому мы проходим через эти инструкции.

В этом руководстве мы рассмотрим управляющие структуры в Java.

Существует три вида управляющих структур:

  • Условные ветки, которые мы используем для выбора между двумя или более путями. В Java есть три типа: if/else/else if , тернарный оператор и переключатель .
  • Циклы, которые используются для перебора нескольких значений/объектов и повторного запуска определенных блоков кода. Основными типами циклов в Java являются for , while и do while .
  • Операторы ветвления, которые используются для изменения потока управления в циклах. В Java есть два типа: break и continue .

2. Если/иначе/иначе если

Оператор if/else является самой базовой структурой управления , но его также можно считать самой основой принятия решений в программировании.

Хотя if можно использовать сам по себе, наиболее распространенным сценарием использования является выбор между двумя путями с помощью if/else :

if (count > 2) {
System.out.println("Count is higher than 2");
} else {
System.out.println("Count is lower or equal than 2");
}

Теоретически мы можем бесконечно сцеплять или вкладывать блоки if/else , но это ухудшит читаемость кода, и поэтому это не рекомендуется.

Мы рассмотрим альтернативные утверждения в оставшейся части этой статьи.

3. Тернарный оператор

Мы можем использовать тернарный оператор как сокращенное выражение, которое работает как оператор if/else .

Давайте снова посмотрим на наш пример if/else :

if (count > 2) {
System.out.println("Count is higher than 2");
} else {
System.out.println("Count is lower or equal than 2");
}

Мы можем реорганизовать это с помощью тернара следующим образом:

System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");

Хотя троичный код может быть отличным способом сделать наш код более читабельным, он не всегда является хорошей заменой if/else.

4. Переключатель

Если у нас есть несколько случаев на выбор, мы можем использовать оператор switch .

Давайте снова посмотрим на простой пример:

int count = 3;
switch (count) {
case 0:
System.out.println("Count is equal to 0");
break;
case 1:
System.out.println("Count is equal to 1");
break;
default:
System.out.println("Count is either negative, or higher than 1");
break;
}

Три или более оператора if/else могут быть трудночитаемыми. В качестве одного из возможных обходных путей мы можем использовать переключатель, как показано выше.

А также имейте в виду, что переключатель имеет область действия и ограничения ввода , которые нам нужно помнить перед его использованием.

5. Петли

Мы используем циклы, когда нам нужно повторить один и тот же код несколько раз подряд.

Давайте посмотрим на быстрый пример сопоставимых циклов for и while :

for (int i = 1; i <= 50; i++) {
methodToRepeat();
}

int whileCounter = 1;
while (whileCounter <= 50) {
methodToRepeat();
whileCounter++;
}

Оба вышеприведенных блока кода вызовут methodToRepeat 50 раз.

6. Перерыв

Нам нужно использовать break для раннего выхода из цикла.

Давайте посмотрим на быстрый пример:

List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
if (names[index].equals(name)) {
break;
}
}

Здесь мы ищем имя в списке имен и хотим прекратить поиск, как только найдем его.

Цикл обычно завершается, но здесь мы использовали break , чтобы замкнуть его и выйти раньше.

7. Продолжить

Проще говоря, продолжить означает пропустить оставшуюся часть цикла, в котором мы находимся:

List<String> names = getNameList();
String name = "John Doe";
String list = "";
for (int i = 0; i < names.length; i++) {
if (names[i].equals(name)) {
continue;
}
list += names[i];
}

Здесь мы пропускаем добавление повторяющихся имен в список.

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

8. Заключение

В этой быстрой статье мы узнали, что такое структуры управления и как их использовать для управления потоком данных в наших программах на Java.

Весь код, представленный в этой статье, доступен на GitHub .