Language/Kotlin

조건문과 반복문 Kotlin

JunOnJuly 2024. 7. 11. 23:48
728x90

if~else 문

if 문의 조건을 만족하면 if 부분을 실행하고, 그렇지 않으면 else 부분을 실행합니다. 또 else if 를 사용해 여러 조건을 나열할 수도 있습니다.

fun main() {
	var num: Int = 100
    
    if (num > 100) {
    	println("data > 100")
    } else if (data == 100) {
    	println("data == 100")
    } else {
    	println("data < 100")
    }
}

다른 언어에서의 일반적인 if~else 문과 다를것 없이 사용할 수 있지만, 코틀린에서는 if~else 문을 표현식으로도 사용할 수 있습니다. 즉, 결괏값을 반환하는 계산식으로도 사용할 수 있습니다. 다만 표현식으로 사용할 때에는 else 를 생략할 수 없습니다.

fun main() {
	var num: Int = 100
    
    val result = if (num > 100) {
    	println("data > 100")
        true // -> 반환값
    } else {
    	println("data =< 100")
        false // -> 반환값
    }
}

다만 if~else 표현식은 각 영역의 마지막 줄만 반환합니다.


When 문

when 키워드 다음의 소괄호에 들어간 데이터가 조건이 되고, 해당 값에 따라 구문이 실행됩니다. 다른 언어에서의 switch~case 문과 비슷합니다.

fun main() {
	var data = "apple"
    when(data) {
    	"apple" -> println("apple)
        "banana" -> println("banana")
        else -> {
        	println("something")
        }
    }
}

또, 단순히 데이터가 아닌 데이터 타입, 범위 등 다양하게 조건을 걸 수 있습니다.

fun main() {
	var data = 100
    when(data) {
    	is String -> println("String")
        10, 50 -> pirntln("10 or 50")
        in 1..9 -> println("1~9")
        else -> println("else")
        }
    }
}

또한 데이터를 명시하지 않고 조건만 명시할 수도 있습니다.

fun main() {
	var data = 100
    when {
    	data < 100 -> println("< 100")
        data == 100 -> println("100")
        data > 100 -> println("> 100")
        }
    }
}

그리고 when 또한 표현식으로 사용할 수 있으며, 역시 else 영역을 생략할 수 없습니다.

fun main() {
	var data = 100
    
    val result = when {
    	data < 100 -> println("< 100")
        data == 100 -> println("100")
        data > 100 -> println("> 100")
        else -> println("else")
        }
    }
}

반복문 for, while

코틀린에서 for 문을 사용할 때 조건에는 주로 범위 연산자인 in 을 사용합니다.

fun main() {
	var sum: Int = 0
    for (i in 1..10) {
    	sum += i
    }
}

다만 조건을 좀 더 다양하고 복잡하게 사용할 수 있습니다.

  • for (i in 1..10) -> 1 에서 10 까지 (1 과 10 포함)
  • for (i in 1 until 10) -> 1 에서 10 까지 (10 미포함)
  • for (i in 2..10 step 2) -> 2 에서 10 까지 2씩 증가
  • for (i in 10 downTo 1) -> 10 에서 1 까지 1씩 감소

조건을 숫자로 명시하지 않고 컬렉션 타입의 데이터 수만큼 반복하게 할 수 있습니다.

fun main() {
	var arr = arrayOf(1, 2, 3)
    for (i in data.indices) {
  		print(data[i])
    }
}

인덱스와 데이터를 함께 가져오고 싶다면 withIndex() 함수를 사용합니다. 파이썬의 enumerate() 와 비슷하게 작동합니다.

fun main() {
	var arr = arrayOf(1, 2, 3)
    for ((index, value) in data.withIndex()) {
  		print(value)
    }
}

while 문은 다른 언어와 비슷하게 작동하는데, 조건이 참이면 중괄호로 지정된 영역을 반복해 실행합니다.

fun main() {
	var num: Int = 0
    while (num < 10) {
    	num += 1
    }
}
728x90