Develop!/Kotlin

for loop in kotlin

체리필터 2023. 7. 21. 10:36
728x90
반응형

for loop문은 특정 범위의 내용을 순회 하면서 내용을 처리할 때 자주 쓴다.

Kotlin에서 for 문은 아래와 같이 사용한다.

fun main() {
    for (i in 1..3) {
        println("Hey $i!")
    }
}

특정 범위를 나타낼 때 두 개의 값을 사용해서 정의할 수 있다.

범위를 나타내는 방법은 '..'를 사용하는 방법 말고 until을 사용할 수도 있다.

fun range() {
    val range1 = 1..10
    val range2 = 0 until 10
    println(range1)
    println(range2)
}

'..'는 시작과 끝을 포함하지만 until은 끝은 포함하지 않게 된다.

until은 실수에 대해서는 사용할 수 없다.

간격은 step 을 사용할 수 있다. 다음 예제를 통해 범위를 확인해 볼 수 있다.

fun showRange(r: IntProgression) {
    for (i in r) {
        print("$i ")
    }
    print(" // $r")
    println()
}

fun main() {
    showRange(1..5)
    showRange(0 until 5)
    showRange(5 downTo 1)
    showRange(0..9 step 2)
    showRange(0 until 10 step 3)
    showRange(9 downTo 2 step 3)
}

문자열의 경우도 가능하다.

fun charRange() {
    for (c in 'a'..'z') {
        print(c)
    }
}

문자열의 경우 첫 번째 문자는 0번째 배열처럼 읽어 들일 수 있다. 아래 처럼 하면 그 의미를 알 수 있다.

fun indexString() {
    val s = "abc"
    for (i in 0..s.lastIndex) {
        print(s[i] + 1)
    }
}

s[i]는 a이지만 아스키코드 +1을 하였기 때문에 b가 나오게 된 것이다.

인덱스로 접근해도 되지만 문자를 Loop문에 넣으면 자동으로 문자가 하나씩 전달된다.

fun hasChar(s:String, ch: Char): Boolean {
    for (c in s) {
        if (c == ch) return true
    }
    return false
}

fun main() {
    println(hasChar("kotlin", 't'))
    println(hasChar("kotlin", 'a'))
}

s에 kotlin이라는 값이 전달 되면 for문에서 c에 문자열이 하나씩 할당 된다.

어떤 동작을 단순히 반복하고 싶다면 repeat를 사용하면 된다.

fun repeat() {
    repeat(2) {
        println("hi!")
    }
}

 

728x90
반응형

'Develop! > Kotlin' 카테고리의 다른 글

생성자 in kotlin  (0) 2023.07.27
'in' in kotlin  (0) 2023.07.26
String Template in Kotlin  (0) 2023.07.19
함수 in Kotlin  (0) 2023.07.14
Data Type in Kotlin  (0) 2023.07.14