Условие задачи
Имея массив целых чисел numbersи цифруdigitSought, найти хотя бы один элемент массива, содержащий эту цифру. Поиск проводить только в четных элементах.
Например, для массива {13, -45, 42, 18} и цифры 4 нужно вывести «Цифра 4 содержится в числе 42», так как число -45 нечетное.
Для массива {13, -45, 42, 18} и цифры 3 нужно вывести «Соответствующий условию элемент массива найти не удалось», так как она не содержится в четных элементах массива.
// Решение 1
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 index = 0; index < numbers.length; ++index) {
// получение значения текущего элемента массива и копирование его в
// переменную
int numberCurrent = numbers[index];
// дальнейшие действия выполняются только если цифра еще не была
// найдена и значение текущего элемента массива четное
if (!digitFound && numberCurrent % 2 == 0) {
// создание отдельной переменной для поиска цифр в числе.
// numberCurrent не может быть использован, так как значение
// переменной изменяется в процессе поиска
int dividend = numberCurrent;
// если значение переменной меньше нуля
if (dividend < 0) {
// изменение знака переменной, т.к. иначе при получении
// цифр их значение тоже окажется меньше нуля
dividend = -dividend;
}
// цикл выполняется до тех пор, пока не будет найдена искомая
// цифра или пока не будет проверены все цифры текущего числа
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(
"Соответствующий условию элемент массива найти не удалось");
}
}
}
// Решение 2: использование библиотечной функции Math.Abs()
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 index = 0; index < numbers.length; ++index) {
// получение значения текущего элемента массива и копирование его в
// переменную
int numberCurrent = numbers[index];
// дальнейшие действия выполняются только если цифра еще не была
// найдена и значение текущего элемента массива четное
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(
"Соответствующий условию элемент массива найти не удалось");
}
}
}