본문 바로가기

차근차근 코틀린

차근차근 Kotlin(4) - 반복문 for, while

반복문 for

: 특정 범위만큼 실행문을 반복!

 

- for 다음에 오는 괄호()에 반복할 범위를 지정하여 사용할 수 있다.

- for(변수 in 시작값..종료값) { 실행문 }

    for(i in 1..10){
        println(i)
    }

- 시작값과 종료값 사이의 .. 대신에 until을 사용하면 종료값 이전까지만 반복한다.

   → index는 0부터 시작하기 때문에 배열의 index를 사용하여 처리하는 코드에서 사용하기 편리

    var listOfMonth = listOf("JAN", "FEB", "MAR", "APR", "MAY", "JUN")

    for(index in 0 until listOfMonth.size){
        print(" ${listOfMonth.get(index)}")
    }

 

Step : 건너뛰기

- 만약 for문에서 실행문을 3의 배수 간격으로 실행시키고 싶다면 for안에 if문을 넣어 조건을 걸어줘야한다. :비효율적

- 하지만 step을 사용한다면 for문의 블록을 step수만큼 건너 뛰어 실행한다.

    for( i in 0..10){
        if(i%3 == 0 ){
            println("현재 숫자는 ${i} 입니다")
        }
    }
    for(i in 0..10 step 3){
        println("현재 숫자는 ${i} 입니다")
    }

 

downTo : 감소시키기

- downTo를 사용하면 큰 수에서 작은 수로 감소하면서 실행할 수 있다. 이 때도 똑같이 step사용이 가능하다.

    for(index in 10 downTo 0){
        println("현재 숫자는 ${index} 입니다.")
    }

 

배열, 컬렉션에 들어 있는 엘리먼트 반복하기

- 배열이나 컬렉션을 엘리먼트의 개수만큼 반복하여 사용할 수 있다.

    val LIST_OF_DAY = listOf("월", "화", "수", "목","금", "토", "일")

    for(day in LIST_OF_DAY){
        println("오늘은 ${day}요일 입니다.")
    }

· LIST_OF_DAY에 담겨져 있는 엘리먼트들을 day 변수에 담은 후에 println으로 출력하였다.

 

반복문 while

: 특정 조건이 만족할 때까지 실행문을 반복! ( while의 조건식 결과가 항상 true이면 무한루프에 빠지게 되니 주의하자 )

    var current = 1
    var final =10

    while(current < final) {
        println("current는 ${current}이고 final보다 작습니다.")
        current += 1
    }

 

do~while

- do와 함께 사용하면 while의 조건식과 관계없이 do 블록 안의 코드를 한 번 실행시킨다.

 

<do while>

fun doWhileTest() {
    var game = 6
    var match = 6

    do {
        print("do~while 테스트")
        game += 1
    } while (game < match)
}

<while>

fun whileTest() {
    var game = 6
    var match = 6

    while (game<match){
        print("while 테스트")
        game += 1
    }
}

■ 결과의 차이 : while은 print가 한번도 출력이 안되고 do while은 한번 출력이 된다.

 

 

· 여기서 사용한 대입연산자란? (+=, -=, *=, /=)

ex) 변수 += 1 //좌측의 변수와 1을 더한 결과값을 좌측의 변수에 대입한다!!

 

break : 반복문 제어하기

- break를 사용하여 반복문을 탈출할 수 있게 해준다.

fun whileBreak() {
    var game = 1
    var match = 10

    while (game<match){
        if (game>5){
            break
        }
        println("while 테스트${game}")
        game += 1

    }
}

fun forBreak() {

    for(i in 1..10){
        println("${i}번째 행입니다")

        if(i>4){
            break
        }
    }
}

 

continue : 다음 반복문으로

- 반복문 내에서 continue를 만나면 continue 다음 코드는 실행하지 않고 반복문의 처음으로 돌아간다.

fun continueTest() {

    for(i in 1..10){
        if( i>3 && i<7 ){
            println("skip")
            continue
        }
        println("${i}번째 항입니다.")
    }
    
}

>> i가 3보다 크고 7보다 작으면 println("skip)만 실행하고 for문의 처음으로 돌아간다.