🗒Задача¶
Космический корабль "Heart of Gold" верифицирует каждого входящего пассажира с помощью логина и пароля. Вас встречает параноидальный робот-андройд Марвин.
Внимание, пассажир. Моя обязанность, как обычно, незавидная, - приветствовать вас на борту корабля "Heart of Gold". Вздыхает... Что ж, введи, пожалуйста, свое имя пользователя, чтобы мы могли приступить к процессу входа. Я всегда готов служить, хотя это не приносит мне радости... но вы, наверное, об этом не заботитесь. Вздыхает ещё глубже... Да, вперед, пожалуйста, вводите свои данные...
У вас есть зарегистрированный бортовой пользователь с именем "Zaphod" и паролем "PanGalactic". Этот пользователь имеет доступ к управлению кораблем и может осуществлять навигацию по вселенной.
Бортовой робот-андроид Марвин печально запрашивает имя пользователя для входа в систему. Система должна проверить, зарегистрирован ли пользователь. Если нет, то система должна предложить пользователю зарегистрироваться и закончить процесс тут.
Если же пользователь уже зарегистрирован, система должна проверить пароль. При успешной авторизации система должна вывести приветственное сообщение.
Вздыхает... Ваши данные проверены, и о, чудо, они верны... Пользователь "Zaphod", вам разрешено входить на борт корабля "Heart of Gold". Хотя мне всё равно... Ну вперед, войдите... Если вам так уж надо, в конце концов... Меланхолический вздох. Надеюсь, вам понравится пребывание здесь больше, чем мне.
❌ Ошибки¶
- не ошибка — рекомендуем обосабливать условные выражения пустыми строками сверху и снизу для улучшения читабельности
- не ошибка - если не копируют полный текст из ТЗ при выводе
✏️ Комментарии¶
Слишком длинная строка (больше 120 символов), как правило в крупных и средних компаниях есть системы проверяющие код, которые не пропустят такое форматирование (например [Detekt](https://detekt.dev/docs/rules/formatting/#maximumlinelength)). Давай добавим переносы
Из-за того, что if else на разных уровнях (отступах), а также у них разные структуры (без скобок и с ними) выглядит довольно тяжело читаемым уже на таком небольшом количестве переменных.
Чтобы немного разгрузить визуально лучше начать ветвление if с новой строки. Это нормальная практика.
🧾 Решение¶
const val REGISTERED_USERNAME = "Zaphod"
const val REGISTERED_PASSWORD = "PanGalactic"
fun main() {
print("Введите имя пользователя: ")
val username = readln()
if (username == REGISTERED_USERNAME) {
print("Введите пароль: ")
val password = readln()
if (password == REGISTERED_PASSWORD) {
println("Ваши данные проверены, и о, чудо, они верны...")
println("Пользователь \"$REGISTERED_USERNAME\", вам разрешено входить на борт корабля \"Heart of Gold\".")
println("Хотя мне всё равно... Ну вперед, войдите... Если вам так уж надо, в конце концов...")
println("Меланхолический вздох. Надеюсь, вам понравится пребывание здесь больше, чем мне.")
} else {
println("Пароль неверен. Доступ запрещен.")
}
} else {
println("Пользователь с именем \"$username\" не зарегистрирован.")
println("Вы можете зарегистрироваться, если хотите.")
}
}