Задача !!! Помогите решить пожалуйста
Есть массив целых чисел (задайте его сами). Вывести на консоль только те числа, которые содержат в себе символ 4.
Ответы (1 шт):
Хотя stackOverflow и не создан для того, чтоб решать задания, а только чтоб помогать в решении, мне скучно, потому давайте подробно разберем ваше задание.
Первым делом давайте создадим и заполним массив. Есть несколько вариантов как это сделать:
- Ввод с консоли
- Случайные числа
Я выберу второй вариант.
Создаем массив целых чисел, записывая его размер в отдельную переменную, чтоб далее не писать числа в цикл, а только константу:
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, пожалуйста, говорите что конкретно у вас не работает, прикладывая уже получившийся код, а не просите писать всё с нуля.
Судя по отсутствующему у вас знаку за прочтение начальной статьи порекомендую прочитать эту самую статью: тык