개발(Android)/kotlin syntax

[Kotlin syntax] Conditional expressions(If, When), Comparison Operators

shinyelee 2022. 4. 1. 10:59

[코틀린 문법] 조건식과 비교연산자

If

  // If Expression(If 표현식) //

  // 참/거짓 판별
    var a = 3
    var b = 5
    var aIsBigger = false

    // if -> 조건을 만족할 때
    if (a > b) {
        // a가 b보다 크면 true 출력
        aIsBigger = true
    // else -> 조건을 만족하지 못할 때
    } else {
        // a가 b보다 크지 않으면 false 출력
        aIsBigger = false
    }
    println(aIsBigger)
//    false

    // 변수 설정
    val aIsBigger2 = if (a > b) {
        true
    } else {
        false
    }
    println(aIsBigger2)
//    false

    // 실행할 구문이 하나라면
    // 이렇게 축약 가능(aIsBigger2와 동일)
    val aIsBigger3 = if (a < b) true else false
    println(aIsBigger3)
//    true

fun aorb(a : Int, b : Int) : Int {
    if(a > b) {
        return a
    } else {
        return b
    }
}
// 코틀린은 3항연산자가 없기 때문에 아래와 같이 표현함
fun aorb2(a : Int, b : Int) = if(a > b) a else b
// 코틀린은 자동으로 타입을 추론 -> (a : Int, b : Int) 뒤에 : Int 생략됨



// if + else 조합이 보통임
    var studentScore1 = 100
    if (studentScore1 >= 150) {
        println("150 이상")
    } else {
        println("150 이상이 아님")
    }
//    150 이상이 아님

    // if 구문을 여러 개 써도 됨
    // 둘 중 하나만 해당 -> 하나만 출력
    var studentScore2 = 50
    if (studentScore2 > 50) {
        println("50 초과")
    }
    if (studentScore2 >= 50) {
        println("50 이상")
    }
//    50 이상

    // 둘 다 해당 -> 둘 다 출력
    var studentScore3 = 65
    if (studentScore3 < 70) {
        println("70미만")
    }
    if (studentScore3 <= 70) {
        println("70이하")
    }
//    70미만
//    70이하

    // 여러 조건 중 하나만 얻어걸리면 된다 -> if else 사용
    var studentScore4 = 40
    if (studentScore4 > 100) {
        // 처음은 무조건 if
        println("100보다 큼")
    } else if (studentScore4 > 50) {
        // if 말고 다른 조건은 else if
        println("50보다 큼")
    } else if (studentScore4 > 30) {
        println("30보다 큼")
    } else {
        // 맨 마지막 쩌리는 else
        println("30보다 작음")
    }
//    30보다 큼



    // 간단한 조건문을 이용한 문제풀이
    // 학생의 A B C D F 점수를 출력

    var score2 = 80

    // 학생의 점수가
    // 100 초과 == A
    // 90 초과 == B
    // 80 초과 == C
    // 70 초과 == D
    // 70 이하 == F

    if (score2 > 100) {
        println("A")
    } else if (score2 > 90) {
        println("B")
    } else if (score2 > 80) {
        println("C")
    } else if (score2 > 70) {
        println("D")
    } else {
        println("F")
    }
//    D

Comparison Operators(비교연산자)

// Comparison Operators(비교연산자) //

// 부등호(>, >=, <, <=)
// 등호(!=, ==)
// 할당 연산자(=)
// is 연산자(is, !is)
    
    
    
    // a = b
    // b를 a에 할당한다
    var lucky = 7
    // 7이라는 값을 lucky라는 변수에 넣겠다는 뜻
    
    // a == b
    // a는 b와 같다
    if (lucky == 7) {
        println("seven")
    }
//    seven

    // a != b
    // a는 b와 같지 않다
    if (lucky != 13) {
        println("not bad")
    }
//    not bad



    // a > b
    // a는 b보다 크다

    // a >= b
    // a는 b보다 크거나 같다

    var score1 = 100
    if (score1 >= 150) {
        println("150 이상")
    } else {
        println("150 이상이 아님")
    }
//    150 이상이 아님



    // a < b
    // a는 b보다 작다

    // a <= b
    // a는 b보다 작거나 같다

    var score2 = 70
    if (score2 < 140) {
        println("140미만")
    }
    if (score2 <= 70) {
        println("70이하")
    }
//    140미만
//    70이하



    // a is String
    // a의 자료형은 String이다
    var type1 : Any = "abc"
    if(type1 is String) {
        println("this is string")
    } else {
        println("this is not string")
    }
//    this is string

    // a !is Int
    // a의 자료형은 Int가 아니다
    var type2 : Any = "abc"
    if(type2 !is Int) {
        println("this is not int")
    } else {
        println("this is int")
    }
//    this is not int

    // is 연산자는 나중에 재등장

When

// When Expression(when 표현식) //

// switch문을 좀 더 편리하게 바꾼 기능
// 하나의 변수를 여러 개의 값과 비교 가능
// 등호, 부등호 사용 불가
// 여러 조건에 부합해도 제일 처음 만족하는 구간에서 실행 종료

fun main() {

    // 조건 만족하는 구간에서 실행 종료

    var score1 = 90

    when(score1) {
        100 -> {
            println("100")
        }
        90 -> {
            println("90")
        }
        // 복수로 조건 걸기 가능
        80,70 -> {
            println("80 or 70")
        }
        else -> {
            println("no")
        }
    }
//    90



    var score3 = 78

    when(score3) {
        100 -> {
            println("Perfect!")
        }
        // 범위 설정 가능
        in 90..99 -> {
            println("Great!")
        }
        in 80..89 -> {
            println("Good!")
        }
        in 70..79 -> {
            println("Ok!")
        }
        else -> {
            println("Well...")
        }
    }
//    OK!



    doWhen(1)
    // 1 만족 -> 종료
    // (!is String도 만족)

    doWhen(1L)
    // is Long 만족 -> 종료
    // (!is String도 만족)

    doWhen(1.1)
    // !is String 만족 -> 종료

    doWhen("shinyelee")
    // "shinyelee" 만족 -> 종료

    doWhen("shinye")
    // else 만족 -> 종료

}

// Any 자료형은 나중에 재등장

// 조건문.ver
//fun doWhen (a: Any) {
//    when(a) {
//        1 -> println("1")
//        "shinyelee" -> println("my name")
//        is Long -> println("long type"
//        !is String -> println("not string")
//        // else 생략 가능
//        else -> println("else")
//    }
//}

// 표현식.ver
fun doWhen (a: Any) {
    var result = when(a) {
        1 -> "1"
        "shinyelee" -> "my name"
        is Long -> "long type"
        !is String -> "not string"
        // else 생략 불가
        else -> "else"
    }
    println(result)
}
fun main() {

    // 코틀린에서는 switch 대신 when 표현식으로
    var cardInt = 11
    when (cardInt) {
        11 -> println("Jack")
        12 -> println("Queen")
        13 -> println("King")
    }

    // if랑 마찬가지로 변수 설정 가능
    // else 까먹지 않기
    val cardInt2 = 14
    val cardName = when (cardInt2) {
        11 -> "Jack"
        12 -> "Queen"
        13 -> "King"
        else -> "Other"
    }
    println(cardName)

}

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

반응형