Цикл for-each для массивов

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

Тренажер по Java

Цикл for-each (или enhanced for) — удобный способ перебрать все элементы массива или коллекции без явного индекса. Синтаксис: for (Тип элемент : массив) { ... }. Нельзя изменить индекс, нельзя узнать текущий номер элемента (если он нужен — используйте обычный for). Зато код чище и меньше ошибок выхода за границы.

Список тем

1. Напиши for-each вместо обычного for

id: 40460_foreach_01_replace

В этом задании вам нужно преобразовать обычный цикл for, который использует индекс для итерации по массиву, на улучшенный цикл for-each. Дан массив целых чисел numbers, и необходимо вычислить их сумму. Заполните пропуски в предоставленном фрагменте кода, чтобы цикл for-each корректно работал и выводил результат. Обратите внимание на синтаксис цикла for-each в Java, который упрощает перебор элементов без явного использования индекса.

Заполните пропуски
int[] numbers = {1, 2, 3};
int sum = 0;
for (input1S : input2S) {
    sum += input3S;
}
System.out.println(sum);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Найди ошибку в for-each

id: 40460_foreach_02_error

В этом фрагменте кода на Java допущена ошибка, связанная с использованием цикла for-each для изменения элементов массива примитивов. Программа пытается удвоить каждый элемент массива, но из-за особенностей работы цикла for-each массив остаётся неизменным. Найдите и исправьте строку с ошибкой, чтобы массив действительно изменился, и программа вывела ожидаемый результат.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) num = num * 2;
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Что выведет for-each?

id: 40460_foreach_03_predict

Проанализируйте приведенный ниже код на Java. Внимательно проследите, как цикл for-each обрабатывает массив целых чисел, выполняя накопление суммы. Выберите правильный результат, который будет выведен на экран после выполнения программы. Учтите начальное значение переменной и порядок обхода элементов.

Выберите правильный вариант ответа
int[] numbers = {1, 2, 3, 4, 5};
int sum = 0;
for (int num : numbers) {
    sum += num;
}
System.out.println(sum);
Сообщения
Проверить
Показать подсказку

4. Выбери подходящий тип цикла

id: 40460_foreach_04_select

В этом задании вам предстоит заполнить пропуски в коде, выбирая подходящий тип цикла for или for-each из выпадающего списка. Вам даны пять фрагментов кода, в каждом из которых нужно решить, какой цикл лучше подходит для решения задачи: обычный for с индексом или for-each для перебора элементов массива. Обратите внимание на контекст: если нужен доступ к индексу или изменение элементов массива, может потребоваться обычный for; если требуется просто перебрать все элементы для чтения, удобнее for-each. Выберите правильные варианты из списка, чтобы код стал корректным и выполнял описанные действия.

Нужно правильно расставить в пропуски предложенные варианты
// 1. Вывод всех элементов массива
String[] names = {"Alice", "Bob", "Charlie"};
input1S (String name : names) {
    System.out.println(name);
}

// 2. Удвоение каждого элемента целочисленного массива
int[] numbers = {1, 2, 3, 4, 5};
input2S (int i = 0; i < numbers.length; i++) {
    numbers[i] = numbers[i] * 2;
}

// 3. Поиск индекса заданного значения в массиве
int[] values = {10, 20, 30, 40, 50};
int target = 30;
int index = -1;
input3S (int i = 0; i < values.length; i++) {
    if (values[i] == target) {
        index = i;
        break;
    }
}

// 4. Вывод элементов массива в обратном порядке
char[] letters = {'a', 'b', 'c', 'd'};
input4S (int i = letters.length - 1; i >= 0; i--) {
    System.out.print(letters[i] + " ");
}

// 5. Подсчёт суммы элементов массива
double[] prices = {1.99, 2.99, 3.99, 4.99};
double total = 0.0;
input5S (double price : prices) {
    total += price;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Собери перебор массива

id: 40460_foreach_05_build

Из предложенных строк соберите корректную Java-программу, которая создаёт массив строк и выводит все его элементы в консоль, используя цикл for-each (enhanced for). Программа должна содержать объявление класса Main, метод main, создание массива, цикл for-each для перебора и вывод каждого элемента. Одна из предложенных строк содержит обычный цикл for с индексом — эта строка лишняя и не должна входить в итоговое решение.

Перетяните в правильном порядке строки из одного блока в другой
public class Main {
    public static void main(String[] args) {
        String[] fruits = {"apple", "banana", "orange"};
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
        for (int i = 0; i < fruits.length; i++) {
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Сопоставь задачу и цикл

id: 40460_foreach_06_compare

В левой колонке приведены задачи по работе с массивами в Java. В правой колонке указаны рекомендации по выбору типа цикла для решения каждой задачи. Сопоставьте каждую задачу с наиболее подходящим типом цикла. Обратите внимание на необходимость доступа к индексу, модификации элементов или только чтения. Это упражнение поможет закрепить понимание, когда использовать обычный цикл for, а когда for-each в Java.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Пройти по массиву и вывести каждый элемент вместе с его индексом.
Найти сумму всех элементов в массиве целых чисел.
Умножить каждый элемент массива на 2 и сохранить изменения.
Проверить, содержится ли заданное значение в массиве.
Вывести элементы массива в обратном порядке.
Скопировать элементы из одного массива в другой того же размера.
Цикл for-each (итерация без индекса)
Цикл for (копирование массивов)
Цикл for-each (поиск значения)
Цикл for (модификация массива)
Цикл for (обратный порядок)
Цикл for (доступ к индексу)
Сообщения
Проверить
Показать подсказку

7. Разметь части for-each

id: 40460_foreach_07_highlight

Разметьте части цикла for-each в Java. Укажите для каждого выделенного сегмента, является ли он типом элемента, именем переменной, двоеточием, именем массива или телом цикла. Это упражнение поможет лучше понять структуру for-each цикла, используемого для итерации по массивам в Java.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
for ({{String~|~t1}} {{item~|~t2}} {{:~|~t3}} {{items~|~t4}}) { {{System.out.println(item);~|~t5}} }
Тип элемента
Имя переменной
Двоеточие
Тело цикла
Имя массива
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру