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

// Решение 5: continue

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) {

// переход к следующей итерации цикла (с пропуском всех

// остальных действий, указанных в теле цикла)

continue;

}

// создание отдельной переменной для поиска цифр в числе.

// 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(

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

}

}

}

// Решение 6: без комментариев

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;

for (int numberCurrent : numbers) {

if (numberCurrent % 2 != 0) {

continue;

}

int dividend = Math.abs(numberCurrent);

while (dividend != 0) {

int remainder = dividend % 10;

if (remainder == digitSought) {

digitFound = true;

System.out.println("Цифра " + digitSought

+ " содержится в числе " + numberCurrent);

break;

}

dividend /= 10;

}

if (digitFound) {

break;

}

}

if (!digitFound) {

System.out.println(

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

}

}

}

Решение 7: Java 8 Stream api

package ru.mami;

import java.util.Arrays;

import java.util.OptionalInt;

public final class NumberFinder {

public static void main(String[] args) {

int[] numbers = { -12, 33, -43, -47, 84, 90, 67 };

int digitSought = 4;

// поиск соответствующего элемента

OptionalInt result = Arrays.stream(numbers)

.filter((i -> i % 2 == 0))

.filter(i -> {

i = Math.abs(i);

while (i != 0) {

if (i % 10 == digitSought) {

return true;

}

i /= 10;

}

return false;

})

.findAny();

// вывод результата

if (result.isPresent()) {

System.out.println("Цифра " + digitSought +

" содержится в числе " + result.getAsInt());

} else {

System.out.println(

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

}

}

}

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