Перейти к содержанию

🗒 Задача

Разрабатываем приложение “Картотека”. Пользователь вводит имя и пол человека. Данные картотеки хранятся в списке.

Человека описывает класс, содержащий имя и пол. Пол должен храниться в enum. После ввода 5 человек, список выводится в консоль.

При старте приложения печатается инструкция в каком формате вводить имя и пол (и какие значения полов доступны).

❌ Ошибки

✏️ Комментарии

Предлагаю еще добавить объект ERROR или UNDEFINDED. чтобы предусмотреть варианты для обработки ошибки именно
По идее у нас не может быть создан объект без данных, тогда прописывание пустых значений по умолчанию - точно уместно?
Перенос получился не очень читаемый. В таких ситуациях лучше символ "равно", которое возвращает значение, писать с новой строки
Классы отбиваются пустой строкой и тут небольшой недочет с форматированием. Да и в целом, если основной конструктор пустой, можно опустить круглые скобки

🧾 Решение

fun main() {
    println(
        "You need to create 5 people cards according to the following example:\n" +
                "Name: [enter your name], sex: [2 types of sex are available, female and male]"
    )
    val directory = List(5) { Human(readName(), readSex()) }
    directory.map { it.printInfo() }
}

fun readName(): String {
    println("Enter a name:")
    val name = readln()
    return name.ifEmpty { "Unknown Name" }
}

fun readSex(): Sex {

    while (true) {
        println("Enter sex:")
        when (readln().uppercase()) {
            Sex.MALE.name -> {
                return Sex.MALE
            }

            Sex.FEMALE.name -> {
                return Sex.FEMALE
            }

            else -> println("Enter Male or Female sex")
        }
    }
}

enum class Sex {
    MALE,
    FEMALE,

}

class Human(val name: String, val sex: Sex) {
    fun printInfo() = println("Name: $name, sex: ${sex.name.lowercase()}")

}