프로그래밍/Kotlin

[코틀린 / Kotlin] 조건문 (if 문, when case 문)

pupu91 2022. 10. 19. 17:14
반응형

 

if문

 

(1) null을 허용하지 않고 초기화

fun main(){
	
    var score = 79
    
    var grade: String
    if(score == 100){
    	grade = "A"
    } else if(score in 90 until 100) { // until : ~미만
    	 grade = "B"
    } else if(score in 80 until 90){
        grade = "C"
    } else{
        grade = "D"  //abc 가 아닌 경우 초기 값이 없기 때문에 else 구문 추가
    }
    println("grade : $grade")
}

출력 결과
D

 

 

 

(2) null값 허용하여 초기화

fun main(){

    var score = 79

    var grade: String? = null // null값 허용하여 초기화
    if(score == 100) {
        grade = "A"
    } else if(score in 90 until 100) {
        grade = "B"
    } else if(score in 80 until 90){
        grade = "C"
    } 
    println("grade : $grade")
}

출력 결과
grade : null
-> null값 허용하여 초기화 했기 때문에 조건문에 걸리는 문자열이 없으면 null 반환

 

 

 

(3) if나 else의 결과 값을 반환 받을 수 있음

fun main(){
    
    var num1 = 10
    var num2 = 20

    var bigger = if(num1 >= num2) num1 else num2
    println(bigger)

    var score = 85
    var grade = if(score == 100){
        println("Perfect")
        "A"
    }else if(score in 90 until 100){
        println("Excellent")
        "B"
    }else if(score in 80 until 90){
        println("Good")
        "ABCD".get(2) // 자바의 charAt() 과 같은 메소드 .get() : 문자열에서 인덱스값 추출 가능
    }else{
        println("Average")
        "D" + "+"
    }
    println("grade : $grade")
}

출력 결과
20
Good
grade : C

 

반응형

 

when case 문

(1) 조건에 함수 반환 값이나 직접 연사을 사용할 수 있음

    var num = 2
    when(num){
        1 -> println("One")
        (1.inc()) -> println("Two")//.inc()는 값을 하나 증가시키는 함수
        (1 * 3) -> println("Three")
        else -> println("No Match")
   } 
   
출력 결과
Two

 

 

 

(2) 블럭을 이용하여 여러 명령을 기술할 수 있음

var num = 2
	when(num){
        1-> {
            println("Hello")
            println(num)
        }
        2 ->{
            println("World")
            println(num)
        }
    }

출력 결과
World
2

 

 

 

(3) 조건 처리한 결과 값을 반환 받을 수 있음

    var a = 10.0
    var b = 20.0
    var op = '+'
    var result: Double? = when(op){
        '+' -> a + b
        '-' -> a - b
        '*' -> a * b
        '/' -> a / b
        else -> null
    }
    println(result)
    
출력 결과
30.0

 

 

 

(4) 나열 연산자를 이용하여 다중 조건을 기술할 수 있음

    var grade = "c+"
    var gradeResult = when(grade){
        "A+", "A-", "a+", "a-" -> "수"
        "B+", "B-", "b+", "b-" -> "우"
        "C+", "C-", "c+", "c-" -> "미"
        "D+", "D-", "d+", "d-" -> "양"
        else -> "가"
    }
    println(gradeResult)
    
출력 결과
미

 

 

 

(5) 비교하려는 값 외에도 타입이 일치하는 경우의 조건도 작성 가능

    var x: Any = "Hello"

    when(x){
        is String -> println(x.length) //x타입이 String 이라면
        is Int -> println(x * 2)
        is Double -> println(x.toInt())
        else -> println("No Match")
    }

출력 결과
5

 

 

 

(6) .. 을 사용하여 범위로 검색

   var score = 100
    var scoreResult = when(score){
        in 91 ..100 -> "A"
        in 81 ..90 -> "B"
        in 71..80 -> "C"
        else -> "D"
    }

    println(scoreResult)

출력 결과
A

 

 

반응형