Lined Notebook

[Kotlin] 프로그램 흐름 제어

by HeshAlgo

1. 조건문 (if)

val number = 0
val result = if (number > 0)
		"양수값"
    	     else if (number < 0)
   		"음수값"
    	     else 
    		"0"

 

1) in 연산자

if (80.0 <= score && score <= 89.9)

위 식은 비교 연산자의 결과가 둘 다 true가 되어야 전체식이 true가 된다.

매번 2개의 조건을 비교 연산자의 논리합 연산자로 연결하는 것은 번거로울 수 있다.

코틀린에서는 포함 여부를 확인 하는 In 연산자와 2개의 점(..)으로 구성된 범위 연산자를 제공한다.

변수 이름 in 시작값..마지막값

시작값과 마지막값은 포함하는 범위를 계산한다. 즉 in 80..90인 경우 80과 90을 모두 포함한다.

그러면 in을 이용해 위에 논리합 연산자로 작성된 식은

if (score in 80.0..89.9)

이렇게 작성 될 수 있다.

 

 

2. 조건문 (when)

코틀린에서는 조건이 많은 경우를 대비한 when문을 제공

when문은 함수처럼 인자가 있는 경우와 없는 경우 2가지 사용법이 존재한다.

1) 인자를 사용하는 when

when (인자) {
   인자에 일치하는 값 혹은 표현식 -> 수행할 문장
   인자에 일치하는 범위 -> 수행할 문장
   ...
   else -> 수행할 문장
}

 

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> {		// 블록은 자유
    	print("x는 1, 2가 아닙니다.")
    }
    
}

만약 일치되는 조건을 한번에 여러 개 표현하려면 쉼표(,)를 이용

when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("기타")  
}

또한, in 연산자를 이용해 범위도 지정할 수 있습니다.

when (x) {
    in 1..10 -> print("x는 1이상 10이하 입니다.")
    in 11..20 -> print("x는 11이상 20이하 입니다.")
    else -> print("x는 범위에 포함되지 않습니다.")
}

 

2) 인자를 사용하지 않는 when

when {
    조건[혹은 표현식] -> 실행할 문장
    ....
}
fun main() {
    print("Enter the score: ")
    var score = readLine()!!.toDouble()
    var grade: Char = 'F'
    
    when {
        score >= 90.0 -> grade = 'A'
        score in 80.0..89.9 -> grade = 'B'
        score in 70.0..79.9 -> grade = 'C'
        score < 70.0 -> grade = 'D'

    }
    print("Score: $score, Grade: $grade")

}

Any를 이용하면 다양한 자료형의 인자를 받을 수 있다.

fun main() {
    cases("Hello")			// String
    cases(1)				// int
    cases(System.currentTimeMillis())	// 현재시간
    cases(MyClass())			// 객체
}

fun cases(obj: Any) {
    when(obj) {
        1 -> print("Int: $obj")
        "Hello" -> print("String: $obj")
        is Long -> print("Long: $obj")
        !is String -> print("Not a String")
        else -> print("Unknown")
        
    }

}

 

 

'Language > 코틀린(Kotlin)' 카테고리의 다른 글

Iterator와 Sequence  (1) 2023.11.19
Scope Function  (0) 2021.10.26
[Kotlin] 코틀린 null 처리 및 자료형 변환  (0) 2021.03.30

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기