관리 메뉴

Bbaktaeho

코틀린(Kotlin) 10. if와 when 본문

프로그래밍 (Programming)/코틀린 (Kotlin)

코틀린(Kotlin) 10. if와 when

Bbaktaeho 2019. 1. 30. 21:56
반응형

코틀린에서는 조건문으로 if와 when을 사용한다. 코틀린에서 if와 when은 명령문이 아닌 표현식으로 간주한다. 다양한 상황에 맞게 간결한 코드를 작성할 수 있도록 해준다.

이렇게 이해해보자.

if)

만약 (이게 true 라면) {이걸 실행해}

-----------------------------------------

if (a==10) {println("a는 10이다")}

if-else)

만약 (이게 true 라면) {이걸 실행해}

true가 아니라면 {이걸 실행해}

-----------------------------------------

if (a==10) {println("a는 10이다")}

else {println("a는 10이 아니다")}

if-else if-else)

만약 (이게 true 라면) {이걸 실행해}

true가 아니고 만약(이게 true 라면) {이걸 실행해} //여러 개 가능

true가 아니라면 {이걸 실행해}

----------------------------------------- (위에서 하나씩 검사하다가 맞는 것이 나오면 if 표현식을 빠져나온다)

if (a==10) {println("a는 10이다")}

else if (a == 2) {println("a는 2이다.")}

else {println("a는 10도 아니고 2도 아니다")}

모두 예제로 확인해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fun main(args: Array<String>){
    val a = 1
    if (a == 10)
        println("a는 10이다"//코드가 하나라면 {} 생략가능
    else
        println("a는 10이 아니다")
    if (a < 1)
        println("a는 1보다 작다")
    else if (a == 2)
        println("a는 2다")
    else if (a > 2)
        println("a는 2보다 크다")
    else
        println("a는 1이다")
}
cs

1
2
a는 10이 아니다
a는 2다
cs

코틀린에서 if를 표현식으로 간주하므로 대입문처럼 사용 가능하다.

1
2
var msg = if(a == 10"a는 10이다" else "a는 10이 아니다"
println(msg)
cs

더 간결하게 하자면

1
printlnif(a == 10"a는 10이다" else "a는 10이 아니다" )
cs

when)

자바를 배우신 분들이라면 switch문을 배웠을 것이다. 코틀린에서 when은 자바의 switch와 비슷하지만 더 간결하고 기능도 다양하다.

when도 if처럼 표현식으로 간주된다.

말로 설명하기 힘들어서 바로 예제 코드로 넘어가겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*
fun main(args: Array<String>){
    val s = Scanner(System.`in`)
    val num = s.nextInt()
    when (num){
        1 -> println("1을 입력했네요")
        2 -> println("2을 입력했네요")
        3 -> println("3을 입력했네요")
        4 -> println("4을 입력했네요")
        56 ->  println("5 또는 6을 입력했네요")
        in 7..10 -> println("7과 10 사이에 숫자를 입력했네요")
        else -> println("1,2,3,4,5,6을 제외한 숫자를 입력했네요")
    }
}
cs

1
2
3
4
5
6
7
8
2 //입력
2을 입력했네요
5 //입력
5 또는 6을 입력했네요
7 //입력
7과 10 사이에 숫자를 입력했네요
cs

switch와 비교했을 때 더 간결하고 다양한 기능이 있다는 걸 알 수 있을 것이다. 또한 when은 표현식이니 대입문에 사용해보자.

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*
fun main(args: Array<String>){
    val s = Scanner(System.`in`)
    val num = s.nextInt()
    val msg = when(num) {
        in 1..10 -> "1부터 10사이 숫자" //String 타입
        in 11..20 -> "11부터 20사이 숫자" //String 타입
        else -> num //Int 타입
    }
    println(msg)
}
cs

1
2
3
4
5
6
7
8
3 //입력
1부터 10사이 숫자

15 //입력
11부터 20사이 숫자

-1 //입력
-1
cs

주의할 점은 whend은 반드시 하나의 결과가 결정되어야 하므로 else를 꼭 지정해줘야 한다.


반응형