Задача !!! Помогите решить пожалуйста

Есть массив целых чисел (задайте его сами). Вывести на консоль только те числа, которые содержат в себе символ 4.


Ответы (1 шт):

Автор решения: Dafter

Хотя stackOverflow и не создан для того, чтоб решать задания, а только чтоб помогать в решении, мне скучно, потому давайте подробно разберем ваше задание.

Первым делом давайте создадим и заполним массив. Есть несколько вариантов как это сделать:

  1. Ввод с консоли
  2. Случайные числа

Я выберу второй вариант.
Создаем массив целых чисел, записывая его размер в отдельную переменную, чтоб далее не писать числа в цикл, а только константу:

final int countNumbers = 10;
int[] numbers = new int[countNumbers];

Теперь давайте заполним его случайными числами в пределе [0;10000)
Math.random() возвращает дробное число в диапазоне от [0;1), умножаем его на 10000 и получаем искомый диапазон:

for (int i = 0; i < countNumbers; i++)
    numbers[i] = (int) (Math.random() * 10000);

Заметьте, что я не использую фигурные скобки {}, чтоб ограничить цикл, ведь внутри него только 1 строка, а значит их можно опустить.
Далее я вывожу весь массив на экран, чтоб было проще проверить, правильно ли работает наша программа:

System.out.println("My massive: " + Arrays.toString(numbers));

Обратите внимание, что Arrays.toString() необходимо импортировать (import java.util.Arrays)

Вот мы и заполнили массив, теперь у нас есть множество вариантов, как можно пройтись по массиву и найти в нем числа, содержащие 4.
Начнем с самого простого:

System.out.print("Numbers containing 4: ");
for (int i = 0; i < countNumbers; i++) 
    if(String.valueOf(numbers[i]).contains("4"))
        System.out.print(numbers[i] + " ");
        

В этом примере опять можно опустить {}
Мы делаем цикл [0;countNumbers), берем элемент массива, переводим его в String, где уже есть метод, проверяющий наличие элемента в строке. Если 4 есть, то выводим это число на экран.

Вам не нравится перевод числа в строку? Давайте напишем свою функцию для проверки наличия цифры в числе:

static boolean containsNumber(int number, int check) {
    while (number > 0) {
        if (number % 10 == check) return true;
        number /= 10;
    }
    return false;
}

И используем её в том же цикле:

 System.out.print("Numbers containing 4: ");
 for (int i = 0; i < countNumbers; i++)
     if (containsNumber(numbers[i], 4))
         System.out.print(numbers[i] + " ");

Ну а вдруг вы хотите выпендриться?
Всегда пожалуйста, давайте использовать цикл, напрямую перебирая массив, а не выдергивая числа индексами:

System.out.print("Numbers containing 4: ");
for (int number : numbers)
    if (containsNumber(number, 4))
        System.out.print(number + " ");

Итого у нас получается что-то такое:

import java.util.Arrays;

public class Main {
    static boolean containsNumber(int number, int check) {
        while (number > 0) {
            if (number % 10 == check) return true;
            number /= 10;
        }
        return false;
    }

    public static void main(String[] args) {
        final int countNumbers = 10;
        int[] numbers = new int[countNumbers];
        for (int i = 0; i < countNumbers; i++)
            numbers[i] = (int) (Math.random() * 10000);
        System.out.println("My massive: " + Arrays.toString(numbers));
        System.out.print("Numbers containing 4: ");
        for (int number : numbers)
            if (containsNumber(number, 4))
                System.out.print(number + " ");
    }
}

Впредь задавая вопросы на stackOverflow, пожалуйста, говорите что конкретно у вас не работает, прикладывая уже получившийся код, а не просите писать всё с нуля.

Судя по отсутствующему у вас знаку за прочтение начальной статьи порекомендую прочитать эту самую статью: тык

→ Ссылка