Skip to content

3. циклы

Циклы в Java

Циклы в Java — это конструкции, которые позволяют повторять выполнение блока кода несколько раз. Они являются важной частью программирования, позволяя автоматизировать повторяющиеся задачи и обрабатывать коллекции данных. В Java существуют три основных типа циклов: for, while, и do while. Давайте рассмотрим их более подробно.

1. Цикл for

Определение: Цикл for используется, когда известно количество итераций. Он состоит из трех частей: инициализации, условия и итерации.

Синтаксис:

for (инициализация; условие; итерация) {
    // Блок кода, выполняемый на каждой итерации
}

Пример:

for (int i = 0; i < 5; i++) {
    System.out.println("Итерация: " + i);
}

В этом примере переменная i инициализируется значением 0, цикл продолжается, пока i меньше 5, и на каждой итерации i увеличивается на 1.

Цикл for с массивом:

int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    System.out.println("Элемент массива: " + numbers[i]);
}

2. Цикл while

Определение: Цикл while используется, когда количество итераций заранее неизвестно. Он выполняет блок кода, пока заданное условие истинно.

Синтаксис:

while (условие) {
    // Блок кода, выполняемый, пока условие истинно
}

Пример:

int i = 0;
while (i < 5) {
    System.out.println("Итерация: " + i);
    i++; // Увеличиваем i на 1
}

Цикл while с условием:

int number = 10;
while (number > 0) {
    System.out.println("Число: " + number);
    number--; // Уменьшаем number на 1
}

3. Цикл do while

Определение: Цикл do while похож на цикл while, но гарантирует выполнение блока кода хотя бы один раз, даже если условие ложно.

Синтаксис:

do {
    // Блок кода, выполняемый хотя бы один раз
} while (условие);

Пример:

int i = 0;
do {
    System.out.println("Итерация: " + i);
    i++;
} while (i < 5);

Цикл do while с условием:

int number = 5;
do {
    System.out.println("Число: " + number);
    number--; // Уменьшаем number на 1
} while (number > 0);

4. Вложенные циклы

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

Пример вложенного цикла:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++) {
        System.out.println("i: " + i + ", j: " + j);
    }
}

Пример с многомерным массивом:

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println(); // Переход на новую строку после каждой строки матрицы
}

5. Операторы управления циклом

Java предоставляет несколько операторов для управления выполнением циклов:

  • break: Прерывает выполнение цикла и выходит из него.
  • continue: Пропускает текущую итерацию и переходит к следующей.

Пример использования break:

for (int i = 0; i < 10; i++) {
```java
    if (i == 5) {
        break; // Прерываем цикл, когда i равно 5
    }
    System.out.println("Итерация: " + i);
}

В этом примере цикл for завершится, когда i станет равным 5, и программа не выведет значения от 5 до 9.

Пример использования continue:

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // Пропускаем четные числа
    }
    System.out.println("Нечетное число: " + i);
}

В этом примере цикл пропустит все четные числа и выведет только нечетные.

6. Циклы с использованием коллекций

Java предоставляет множество коллекций, таких как списки и множества, которые можно перебирать с помощью циклов. Наиболее распространенные коллекции находятся в пакете java.util.

Пример с использованием ArrayList:

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Яблоко");
        fruits.add("Банан");
        fruits.add("Апельсин");

        for (int i = 0; i < fruits.size(); i++) {
            System.out.println("Фрукт: " + fruits.get(i));
        }
    }
}

Пример с использованием for-each: Java также предоставляет удобный способ перебора элементов коллекций с помощью цикла for-each.

for (String fruit : fruits) {
    System.out.println("Фрукт: " + fruit);
}

Цикл for-each автоматически перебирает все элементы коллекции, что делает код более читаемым и удобным.

7. Циклы и многомерные массивы

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

Пример работы с двумерным массивом:

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println(); // Переход на новую строку после каждой строки матрицы
}

8. Примеры использования циклов

Пример 1: Сумма чисел от 1 до 10

int sum = 0;
for (int i = 1; i <= 10; i++) {
    sum += i; // Суммируем числа
}
System.out.println("Сумма чисел от 1 до 10: " + sum);

Пример 2: Факториал числа

int number = 5;
int factorial = 1;
for (int i = 1; i <= number; i++) {
    factorial *= i; // Вычисляем факториал
}
System.out.println("Факториал " + number + ": " + factorial);

Пример 3: Числа Фибоначчи

int n = 10;
int a = 0, b = 1;
System.out.print("Числа Фибоначчи: ");
for (int i = 0; i < n; i++) {
    System.out.print(a + " ");
    int next = a + b; // Следующее число
    a = b; // Сдвигаем
    b = next; // Сдвигаем
}

Заключение

Циклы в Java — это мощный инструмент для выполнения повторяющихся задач и обработки данных. Понимание различных типов циклов (for, while, do while), их особенностей, а также операторов управления (break, continue) позволяет создавать эффективные и читаемые программы. Использование циклов с коллекциями и многомерными массивами расширяет возможности работы с данными, делая код более гибким и удобным.