🗒 Задача¶
Напиши программу, которая должна создавать массив из определенного количества ингредиентов, которые будет вводить пользователь.
-
элементы вводятся по одному;
-
перед вводом элементов сначала запрашивается количество планируемых ингредиентов;
-
запрещено использовать список или динамический массив.
Выведи полученные ингредиенты в консоль через запятую.
❌ Ошибки¶
-
не ошибка — можно рекомендовать сразу объявлять и инициализировать через лямбду
-
используют динамический ArrayList вместо Array
-
если массив инициализирован “” одобрять и предлагать комментарий с доработкой
✏️ Комментарии¶
Все корректно!
А еще можно сразу объявлять и инициализировать массив через лямбду
`val array = Array(readln().toInt()) { readln() }`
Попробуй применить этот код и посмотреть как он работает.
Сейчас ты реализовал массив определенного количества ячеек и сразу проинициализировал пустыми строками.
Это корректно. Вообще чтобы реализовать эту задачу может быть несколько подходов:
- инициализировать при создании null с помощью [arrayOfNulls](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/array-of-nulls.html)
- инициализировать каждый элемент сразу при создании. с помощью лямбды. максимально сокращенная форма может выглядеть вот так `Array(readln().toInt()) { readln() }`. здесь задаем и размер, и содержимое.
Предлагаю для разнообразия реализовать, например, еще последний вариант.
Согласно условию нам необходимо создавать массив с определенным количеством ячеек.
Какие есть легальные варианты:
- инициализировать при создании null с помощью [arrayOfNulls](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/array-of-nulls.html)
- инициализировать каждый элемент сразу при создании. с помощью лямбды. максимально сокращенная форма может выглядеть вот так `Array(readln().toInt()) { readln() }`. здесь задаем и размер, и содержимое.
Ключевая реализация в этой задаче – это инициализировать пустой (или заполняемый в процессе инициализации) массив определенного количества ячеек. Какие варианты реализации тут могут быть уместны?)
ArrayList это реализация интерфейса List. То есть это динамически изменяемая сущность.
Нужно создать чистый массив с количеством элементов, которые введет пользователь
Да, смотри, ты проинициализировал массив при создании пробелами, указав " ".
Во 1 если надо просто пустыми строками проинициализировать, достаточно "" (иначе это символ пробела — уже не пустота)
Во 2 можно сделать еще круче – давай сразу инитить вводом элемента с консоли, прямо в лямбде
Смотри, изначально был создан массив с одним строковым элементом. Конструкция `+=` фактически каждый раз пересоздает массив, копируя все предыдущие элементы в новый. Довольно затратная процедура. Согласно ТЗ нам надо с самого начала создать массив с определенным количеством ячеек.