제어문을 다루는 방법

Young Soo Oh·2023년 9월 17일
0

kotlin

목록 보기
5/8
post-thumbnail

제어문을 다루는 방법

If 문 자바랑 동일

fun validateScoreIsNotNegative(score: Int) {
    if (score < 0) {
        throw IllegalArgumentException("${score}는 0 보다 작을수 없습니다.")
    }
}

fun getPassOrFail(score: Int): String {
    if (score >= 50) {
        return "P"
    } else {
        return "F"
    }
}

하지만 Java 에서는 if-else는 Statement 이지만, Kotlin에서는 Expression 이다.

int score = 30 + 40; //70이라는 하나의 결가과 나온다. (Expression 이면서 statment)

fun getKotlinPassOrFail(score: Int): String {
    return if (score >= 50) {
        "P"
    } else {
        "F"
    }
}

즉 kotlin 에서는 if-else를 expression 으로 사용할 수 있기 때문에 3항 연산자가 없다.

fun getKotlinGetGrade(score: Int): String {
    return if (score >= 90) {
        "A"
    } else if (score >= 80) {
        "B"
    } else {
        "C"
    }
}

switch

fun kotlinValidateScore(score: Int) {
    if (score !in 0..100) {
        throw IllegalArgumentException("score 범위는 0부터 100이 아닙니다.")
    }
}

fun kotlinValidateScore(score: Int) {
    if (score in 0..100) {
        throw IllegalArgumentException("score 범위는 0부터 100입니다.")
    }
}
//코틀린은 switch 가 사라짐 대신에 when을 사용

 fun getGradeWithSwitch(score: Int): String{
    return when (score/10){
        9 -> "A";
        8 -> "B";
        7 -> "C";
        6 -> "D";
        else -> "E"
    }
}
//범위
fun getGradeWithSwitch(score: Int): String{
    return when (score/10){
        in 80..90 -> "A";
        in 70..80 -> "B";
        in 60..70 -> "C";
        in 50..60 -> "D";
        else -> "E"
    }
}
//객체가 스트링이라면...  
fun startWithA(obj: Any):Boolean{
    return when(obj){
        is String -> obj.startsWith("A")
        else -> false
    }
}

fun judgeNumber(number: Int) {
    when (number) {
        1, 0, -1 -> println("어디서 많이 본 숫자 입니다.")
        else -> println("1,0,-1 이 아닙니다.")
    }
}

fun judgeNumber2(number: Int) {
    when {
        number == 0 -> println("주어진 숫자는 0입니다.")
        number % 2 == 0 -> println("주어진 숫자는 짝수입니다.")
        else -> println("주어진 숫자는 홀수입니다.")
    }
}

0개의 댓글