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

Условие задачи

Имея массив целых чисел 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(

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

}

}

}

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