Foreach
Цикл for eachиспользуется для упрощенного прохода по всем элементам массива в том случае, когда индекс текущего элемента не используется в теле цикла.
Вывод на экран всех элементов массива (цикл for, неоптимальное решение):
package ru.mami;
public final class NumberFinder {
public static void main(String[] args) {
int[] numbers = { -12, 33, -43, -47, 84, 90, 67 };
for (int i = 0; i < numbers.length; ++i) {
int numberCurrent = numbers[i];
System.out.println(numberCurrent);
}
}
}
Вывод на экран всех элементов массива (цикл foreach, оптимальное решение):
package ru.mami;
public final class NumberFinder {
public static void main(String[] args) {
int[] numbers = { -12, 33, -43, -47, 84, 90, 67 };
for (int numberCurrent : numbers) {
System.out.println(numberCurrent);
}
}
}
Вывод на экран всех элементов массива и их индексов (цикл for, оптимальное решение):
package ru.mami;
public final class NumberFinder {
public static void main(String[] args) {
int[] numbers = { -12, 33, -43, -47, 84, 90, 67 };
for (int i = 0; i < numbers.length; ++i) {
int numberCurrent = numbers[i];
System.out.println(i + " " + numberCurrent);
}
}
}
// Решение 3: цикл for each
package ru.mami;
public final class NumberFinder {
public static void main(String[] args) {
int[] numbers = { -12, 33, -43, -47, 84, 90, 67 }; // исходный массив
int digitSought = 4; // искомая цифра
boolean digitFound = false; // true, если цифра уже найдена
// цикл, счетчик которого проходит по всем элементам массива
for (int numberCurrent : numbers) {
// дальнейшие действия выполняются только если цифра еще не была
// найдена и значение текущего элемента массива четное
if (!digitFound && numberCurrent % 2 == 0) {
// создание отдельной переменной для поиска цифр в числе.
// numberCurrent не может быть использован, так как значение
// переменной изменяется в процессе поиска
int dividend = Math.abs(numberCurrent);
// цикл выполняется до тех пор, пока не будет найдена искомая
// цифра или пока не будет проверены все цифры текущего числа
while (!digitFound && dividend != 0) {
// получение самой правой цифры значения переменной
// dividend (остаток от деления на 10)
int remainder = dividend % 10;
// если полученная цифра является той, которую надо найти
if (remainder == digitSought) {
// сохранение информации о том, что цифра уже найдена
digitFound = true;
// вывод строки на экран
System.out.println("Цифра " + digitSought
+ " содержится в числе " + numberCurrent);
}
// целочисленное деление на 10, чтобы при следующей итерации
// цикла while получить следующую цифру
dividend /= 10;
}
}
}
// если после прохода по всему массиву искомый элемент не был найден
if (!digitFound) {
// вывод на экран соответствующей информации
System.out.println(
"Соответствующий условию элемент массива найти не удалось");
}
}
}
// Решение 4: break
package ru.mami;
public final class NumberFinder {
public static void main(String[] args) {
int[] numbers = { -12, 33, -43, -47, 84, 90, 67 }; // исходный массив
int digitSought = 4; // искомая цифра
boolean digitFound = false; // true, если цифра уже найдена
// цикл, счетчик которого проходит по всем элементам массива
for (int numberCurrent : numbers) {
// дальнейшие действия выполняются только если
// значение текущего элемента массива четное
if (numberCurrent % 2 == 0) {
// создание отдельной переменной для поиска цифр в числе.
// numberCurrent не может быть использован, так как значение
// переменной изменяется в процессе поиска
int dividend = Math.abs(numberCurrent);
// цикл выполняется до тех пор,
// пока не будут проверены все цифры текущего числа
while (dividend != 0) {
// получение самой правой цифры значения переменной
// dividend (остаток от деления на 10)
int remainder = dividend % 10;
// если полученная цифра является той, которую надо найти
if (remainder == digitSought) {
// сохранение информации о том, что цифра уже найдена
digitFound = true;
// вывод строки на экран
System.out.println("Цифра " + digitSought
+ " содержится в числе " + numberCurrent);
// преждевременный выход из цикла while независимо от
// условия (не проверяя оставшиеся цифры)
break;
}
// целочисленное деление на 10, чтобы при следующей итерации
// цикла while получить следующую цифру
dividend /= 10;
}
// если искомая цифра уже найдена
if (digitFound) {
// выйти из цикла for, не проверяя оставшиеся числа
break;
}
}
}
// если после прохода по всему массиву искомый элемент не был найден
if (!digitFound) {
// вывод на экран соответствующей информации
System.out.println(
"Соответствующий условию элемент массива найти не удалось");
}
}
}