Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java-lekcii-2016-01-17 / presentation-oct-10.docx
Скачиваний:
16
Добавлен:
27.03.2016
Размер:
44.25 Кб
Скачать

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(

"Соответствующий условию элемент массива найти не удалось");

}

}

}

Соседние файлы в папке java-lekcii-2016-01-17