티스토리 뷰

728x90

 


While

1. while

• 조건을 만족하는 동안 본문(반복할 내용)을 반복한다.

• while(조건) {
       반복할 내용
   }

var i = 0
while (i < 5) {
    if (i % 2 == 0) {
        println("i=${i} 짝수")
    } else {
        println("i=${i} 홀수")
    }
    i++ // 이 부분 제거하면 무한 루프
}

 

2. do while

• 본문(반복할 내용)을 먼저 실행하고 조건이 만족하면 반복한다.
     - 조건을 만족하지 못하더라도 최초 한 번은 무조건 실행한다.

• do {
      반복할 내용
  } while (조건)

var z = 10
do {
    println("시작")
    z++
} while (z < 20)

 

* 무한 반복

• while문은 조건을 만족하는 동안 본문이 반복 실행되기 때문에, 무한 반복을 원하지 않으면(사실 원하는 경우가 거의 없음) 본문에 while문의 조건을 벗어나도록 하는 내용이 있어야 한다.

 

for

• 범위의 요소들을 하나씩 진행하며 반복한다.

• for(변수명 in 범위) {
      반복할 내용
  }

// for문 with Range & Progression
println("for (value in 0..4)")
for (value in 0..4) {
    println(value)
}
println("--------------------------------")

println("for (value in 0..5 step 2)")
for (value in 0..5 step 2) {
    println(value)
}
println("--------------------------------")

println("for (value in 5 downTo 0)")
for (value in 5 downTo 0) {
    println(value)
}
println("--------------------------------")

// for문 with Collection
val LIST1 = listOf<Int>(0, 5, 3, 8)
println("for (number in LIST1)")
for (number in LIST1) { // 값이 필요할 때
    println(number)
}
println("--------------------------------")

println("for (i in 0 until LIST1.size)")
for (i in 0 until LIST1.size) { // 인덱스가 필요할 때
    println(i)
}
println("--------------------------------")

println("for ((index, number) in LIST1.withIndex())")
for ((index, number) in LIST1.withIndex()) { // 인덱스, 값 모두 필요할 때
    println("${index}  |  ${number}")
}
println("--------------------------------")

println("for (index in LIST1.indices)")
for (index in LIST1.indices) { // 인덱스가 필요할 때 - 명시적
    println(index)
}
println("--------------------------------")

 

* forEach

• for와 마찬가지로 각 요소들을 하나씩 진행하며 반복한다.

• 클래스, 고차 함수, 람다 함수의 개념을 알아야 완벽히 이해할 수 있다. -> 우선 쓰는 법만 알고 있자.

println("LIST1.forEach { println(it) }")
LIST1.forEach {
    println(it) // forEach는 기본으로 it 제공
}
println("--------------------------------")

println("LIST1.forEach { number -> println(number) }")
LIST1.forEach { number -> // 기본 변수 이름 it 이름 바꿀 수 있음.
    println(number)
}
println("--------------------------------")

println("LIST1.forEachIndexed { index, value -> println(\"\${index}  |  \${value}\") }")
LIST1.forEachIndexed { index, value -> // 인덱스 필요할 때
    println("${index}  |  ${value}")
}
println("--------------------------------")

 

중첩 반복문

• 반복문 안에 반복문이 있는 구조

• for (변수1 in 범위1) {
       for (변수2 in 범위2) {
           반복할 내용
       }
   }

println("중첩 반복문")
for (i in 1..3) { // i 반복문
    for (j in 1..3) { // j 반복문
        println("i=${i} | j=${j}")
    }
}
println("--------------------------------------")

 

반복문 키워드 break, continue, return, label

1. break

• 가장 가까운 반복문의 반복을 끝내고 탈출

println("break")
for (i in 1..4) { // i 반복문
    for (j in 1..4) { // j 반복문
        if (j == 3) break // j == 3이면 j 반복문 탈출
        println("i=${i} | j=${j}")
    }
}
println("--------------------------------------")

 

2. continue

• 가장 가까운 반복문의 진행 중인 반복을 끝내고 다음 반복 진행

println("continue")
for (i in 1..4) { // i 반복문
    for (j in 1..4) { // j 반복문
        if (j == 3) continue // j == 3이면 반복 중단하고 다음 j=4 반복 진행
        println("i=${i} | j=${j}")
    }
}
println("--------------------------------------")

 

3. return

• 가장 가까운 함수 탈출

println("return")
fun tempFunc(): Unit {
    for (i in 1..4) { // i 반복문
        for (j in 1..4) { // j 반복문
            if (j == 3) return // j == 3이면 함수 종료
            println("i=${i} | j=${j}")
        }
    }
}
tempFunc()
println("--------------------------------------")

 

4. label

• 위의 3가지 키워드들의 탈출 지점을 정해줌.

• "가장 가까운"이 아니라 라벨로 설정한 것을 탈출

// break with label
println("break with label")
loopName@ for (i in 1..4) { // i 반복문
    for (j in 1..4) { // j 반복문
        if (j == 3) break@loopName // j == 3이면 loopName 반복문 탈출
        println("i=${i} | j=${j}")
    }
}
println("--------------------------------------")

// continue with label
println("continue with label")
loopName@ for (i in 1..4) { // i 반복문
    for (j in 1..4) { // j 반복문
        if (j == 3) continue@loopName // j == 3이면 loopName 반복문 중단하고 다음 loopName 반복 진행
        println("i=${i} | j=${j}")
    }
}
println("--------------------------------------")

 

* forEach에서의 return과 label

println("forEach with label")
listOf(1, 6, 3).forEach loopName@{
    if(it == 6) return@loopName // it == 6이면 람다함수 return하고 다음 forEach 진행...?
    println(it)
}

 

 

 

 

 

 

이 글은

패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online

강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.

 


728x90

'📱 Android > 💻 Kotlin' 카테고리의 다른 글

[Android/Kotlin] 12. 출력  (0) 2022.10.07
[Android/Kotlin] 11. 예외 처리  (0) 2022.10.07
[Android/Kotlin] 9. 이터러블(Iterable)  (0) 2022.10.06
[Android/Kotlin] 8. 컬렉션(Collection)  (0) 2022.10.05
[Android/Kotlin] 7. 배열  (0) 2022.10.04
댓글
공지사항