앱 개발/Kotlin

[Kotlin] 코틀린 기본 3 (반복문 for & while, withIndex)

cha430 2026. 2. 26. 10:49

 

 

 

for

 

fun forAndWhile() {
  val students :ArrayList<String> = arrayListOf("Cha", "Lee", "jaehyun")
  
  for(name :String in students){
    println("${name}")
  }
}

// 결과값
Cha
Lee
jaehyun

 

fun AndWhile() {
  var sum1 :Int = 0
  for (i in 1..10) {	// 1부터 10까지
    sum1 += i
  }
  println(sum1)	// 55
  
  var sum2 :Int = 0
  for (i in 1..10 step 2) {  // 1부터 2씩 증가해서 10까지
    sum2 += i
  }
  println(sum2)	// 25
  
  
  var sum3 :Int = 0
  for (i in 1..10 downTo 1) {  // 10부터 차례로 1까지
    sum3 += i
  }
  println(sum3)
}

  var sum4 :Int = 0
  for (i in 1 until 100) {	// 1부터 99까지 (100을 포함하지 않음)
    sum4 += i
  }
  println(sum4)

 

 

 

while

fun forAndWhile() {
  var index = 0
  while(index < 10){
    println("current index : ${index}")
    index++
  }
}

// 0부터 9까지 출력

 

 

 

withIndex()

 

fun forAndWhile() {
  val students: ArrayList<String> = arrayListOf("Cha", "Lee", "jaehyun")
  
  for ((index, name) in students.withIndex()) {
    println("${index+1}번째 학생 : $name")
  }
}

// 출력

1번째 학생 : Cha

2번째 학생 : Lee

3번째 학생 : jaehyun

 

 

왜냐면 students.withIndex() 를 보면

타입이 Iterable<IndexedValue<String>> 이고, 이건 내부적으로 아래와 같다.

data class IndexedValue<T>(
    val index: Int,
    val value: T
)

data class이기 때문에 component1(), component2()가 자동 생성되고

for (item in students.withIndex()) {
    val index = item.component1()
    val name = item.component2()
}

이것과 완전히 동일하다고 한다.

 

코틀린이 타입을 자동으로 추론하기 때문에 쓰지 않아도 되지만, 원래 타입은 이렇게 된다.

  for((index: Int, name :String) in students.withIndex()) {
    println("${index+1}번째 학생 : ${name}")
  }