파게로그

[Basic] if, when expression 본문

콤퓨타 왕기초/Kotlin

[Basic] if, when expression

파게 2021. 6. 7. 18:05

if

Java에서와 같이 if문을 사용할 수 있다.

 

fun main(args: Array<String>) {
    var score = readLine()!!.toInt()

    if (score > 90) {
        println("Great!")
    } else if (score > 80) {
        println("Good!")
    } else {
        println("Ha-ha!")
    }
}

Kotlin에서는 statement가 아니라 expression으로서 if를 사용할 수도 있다.

 

fun main(args: Array<String>) {
    var score = readLine()!!.toInt()

    var result = if (score > 90) {
        "Great!"
    } else if (score > 80) {
        "Good!"
    } else {
        "Ha-ha!"
    }

    println(result)
}

아래와 같이, if의 branch가 2개 이상의 expression을 포함할 때, 마지막 expression은 block의 value로서 반환된다.

 

fun main(args: Array<String>) {
    var num = readLine()!!.toInt()
    var oddOrEven : String

    var oddOrEvenKor = if (num % 2 == 0) {
        oddOrEven = "even"
        "짝수"
    } else {
        oddOrEven = "odd"
        "홀수"
    }

    println("eng: $oddOrEven")
    println("kor: $oddOrEvenKor")
}

 

when

마치 Java의 switch-case문과 유사하다. when이 switch의 역할을, else가 default의 역할을 하며, case는 생략되는 것이다.

 

fun main(args: Array<String>) {
    var a = 20
    var b = 4

    print("operator : ")
    var operator = readLine()

    var result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> "$operator is invalid operator"
    }

    println("$a $operator $b = $result")
}

아래처럼, 여러 case를 묶어서 작성할 수도 있다.

 

fun main(args: Array<String>) {
    var num = readLine()!!.toInt()

    var greeting = when (num) {
        2, 3, 5, 7 -> "hello, prime"
        1, 4, 6, 8, 9, 10 -> "hello, composite"
        else -> "hello, $num"
    }

    println(greeting)
}

아래처럼, 범위로 묶어서 작성할 수도 있다.

 

fun main(args: Array<String>) {
    var num = readLine()!!.toInt()

    when (num) {
        in 1..80 -> println("hello, monkey")
        in 80..130 -> println("hello, human (1)")
    }

    when (num) {
        in 80..130 -> print("hello, human (2)")
    }
}

▪ break가 자동으로 달려있다고 생각하면 될 듯하다.

▪ 범위는 닫힌 범위이다.

▪ 위 프로그램의 결과는 다음과 같다.

80
hello, monkey
hello, human (2)

 

한편, when문을 통해서 대입이 이루어지는 것이 아니라면 else가 없어도 된다.

'콤퓨타 왕기초 > Kotlin' 카테고리의 다른 글

[Basic] functions  (0) 2021.06.08
[Basic] for, while, iterate through range, break, continue  (0) 2021.06.08
[Basic] Input and Output  (0) 2021.06.07
[Basic] Expression, Statement, Block  (0) 2021.06.07
[Basic] 형 변환(type casting)  (0) 2021.06.07
Comments