🗒 Задача¶
Создай новый список ингредиентов, состоящий из 3 шт. Нужно расширить функционал программы – пусть у пользователя будет возможность добавить к базовым ингредиентам из списка еще один свой.
-
после создания базового списка, выведи его в консоль: "В рецепте есть базовые ингредиенты: [базовый_список_ингредиентов]";
-
затем сообщи о возможности добавить свой: "Желаете добавить еще?” и активировать ввод с консоли;
-
если пользователь ввел “нет” или что-то иное – заверши программу, если пользователь ввел “да” – запроси: "Какой ингредиент вы хотите добавить?";
-
для обработки ответа пользователя используй метод сравнения строк с игнорированием регистра:
equals; -
добавь считанное значение в базовый список;
-
в конце выведи сообщение со списком всех элементов такого типа: "Теперь в рецепте есть следующие ингредиенты: [список_ингредиентов]".
❌ Ошибки¶
-
строку приводят к нижнему регистру и сравнивают — предлагать более элегантное решение answer.equals("да", ignoreCase = true)
-
для выхода используют exitProcess
✏️ Комментарии¶
Можно запрашивать строку прям в условии. Тут не обязательна дополнительная переменная в силу того, что используем ее только один раз.
Давай еще учтем разный регистр, который может быть введен пользователем. Можно использовать метод сравнения у которого есть свойство `ignoreCase`
`exitProcess` используется для немедленного завершения выполнения всего процесса приложения с указанным кодом выхода. Это агрессивный способ завершения, и он должен использоваться только в случаях, когда необходимо полностью завершить работу программы.
И если в консольном приложении особо последствий не будет, но если так решить выйти из функции в Андройд приложении это будет чревато. Например, тем, что некоторые данные состояния могут не сохраниться.
Предлагаю использовать более распространенные и безопасный способ выхода из функции.
`if` , как другие конструкции лучше обосабливать пустыми строками. Это должно уменьшить монолитность кода и сделать его более читабельным.
🧾 Решение¶
fun main() {
val ingredients = mutableListOf("соль", "сахар", "мука")
println("В рецепте есть базовые ингредиенты:")
ingredients.forEach { println(it) }
println()
println("Желаете добавить еще?")
val answer = readln()
if (answer.equals("да", ignoreCase = true)) {
println("\nКакой ингредиент вы хотите добавить?")
ingredients.add(readln())
println("\nТеперь в рецепте есть следующие ингредиенты:")
ingredients.forEach { println(it) }
}
}