Функция в Kotlin, которая принимает название месяца во входных данных и возвращает количество дней для этого месяца - PullRequest
0 голосов
/ 26 февраля 2020

Я не знаю, что я делаю неправильно.

Напишите функцию в Kotlin, которая принимает имя месяца во входных данных и возвращает количество дней для этого месяца (нет нужно беспокоиться о високосном году для этого упражнения).

Ваш "основной" должен напечатать заявление, подобное The month of <month> has <number> of days.

Код:

fun getDate(month:String, number:Int){

    var January =  31
    var February = 28  
    var March =  31
    var April =  30
    var May = 31
    var June = 30
    var July = 31
    var August = 31
    var September = 30
    var October = 31
    var November = 30
    var December = 31

    println("The month of $month has $number of days")
}

fun main(args: Array<String>) {
    getDate("January")
}

1 Ответ

0 голосов
/ 26 февраля 2020

Я думаю, вы путаете строки и имена переменных. Переменные с названиями месяцев нельзя сравнивать с String, содержащим название месяца.

Для этой проблемы есть два решения:

  1. С множеством веток:

    fun getDate(month: String) {
        val number = when (month) {
            "January"   -> 31
            "February"  -> 28
            "March"     -> 31
            "April"     -> 30
            "May"       -> 31
            "June"      -> 30
            "July"      -> 31
            "August"    -> 31
            "September" -> 30
            "October"   -> 31
            "November"  -> 30
            "December"  -> 31
            else        -> throw RuntimeException("Invalid month")
        }
        println("The month of $month has $number of days")
    }
    
  2. С коллекцией (в данном примере это хэш-карта):

    val months = mapOf(
        "January"   to 31,
        "February"  to 28,
        "March"     to 31,
        "April"     to 30,
        "May"       to 31,
        "June"      to 30,
        "July"      to 31,
        "August"    to 31,
        "September" to 30,
        "October"   to 31,
        "November"  to 30,
        "December"  to 31
    )
    
    fun getDate(month: String) {
        val number = months[month] ?: throw RuntimeException("Invalid month")
        println("The month of $month has $number of days")
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...