[Kotlin]반복문 for/forEach/while

dada·2021년 8월 24일
0

Kotlin

목록 보기
5/14
post-thumbnail

헷갈리지 말자~!

var arr = intArrayOf(1, 2, 3, 4)

    for (item in 0..3) {
        println(item)
    } //0 1 2 3
   
    for (item in 0..arr.size - 1) {
        println(item)
    } //0 1 2 3

    for(item in 2..arr.size-1){
        println(item)
    } //2 3

    for(item in 0 until arr.size){
        println(arr.get(item))
    } //1 2 3 4
        
    for(item in 0..arr.size-1){
        println(arr.get(item))
    } //1 2 3 4

    for(item in 0..arr.size-1 step 2){
        println(arr.get(item))
    } //1 3

주의하자~!

   for (item in 10..0) {  //오류는 안뜨는데 값이 출력이 안됨
        println(item)
    }
    
   for (item in 0 downTo 10 step 2) {  
      println(item)
    }//오류는 안뜨는데 값이 출력이 안됨
    
    var i = 4  //while문 변수 선언할때 조건식에서 값 계속 바뀌는거로 하려면 var로 선언~!!
    while (i > 1) {
        i--
        if (i == 3) break
    }
    
    arr.forEach { i -> println(i + 3) } //자바 stream최종연산 forEach()랑 헷갈리지 말것.코틀린 forEach 구현부 {} 로 씀!!

for문

향상된 for문

    var arr = intArrayOf(1, 2, 3, 4)
    for (item in arr) {
        println(item)
    }

    var mutable = mutableListOf(1, 2, 3, 4)
    for (item in mutable) {
        println(item)
    }

반복하는 방법

  • **값만/인덱스-값: withIndex() / forEach{} / forEachIndexed{}

fun IntArray.withIndex(): Iterable<IndexedValue<Int>>
inline fun IntArray.forEach(action: (Int) -> Unit)

    for (item in 1..9) {
        println(item)
    }

    for ((index, item) in mutable.withIndex()) { 
    //반드시 index,item으로 명시 안해도됨,
    //(index,item)의 () 생략 불가
        println(" $index - $item ")
    }
    arr.forEach { i -> println(i) }  //자바 stream foreach랑
    arr.forEach { i -> println(i + 3) }
    arr.forEach { i -> i }  //Unit을 반환하는데 왜 이게 되지
    
    arr.forEachIndexed { index, item -> println("index: $index item: $item") }
    }
 //  arr.forEachIndexed { (index, item) -> println("index: $index item: $item") }
    }
  • 마지막 값 포함 X: until
    for (i in 0 until 11) {
        println(i)
    }

    for (inde in 0 until arr.size-1) { 
        println(arr.get(inde))
    }
  • 해당 수만큼 건너뛰기:step
    for (item in 0..10 step 3) {
        println(item)
    } //0 3 6 9
  • 감소 시키기:downTo
    val arr1 = intArrayOf(1, 2, 3, 4)

    for (item in 4 downTo 0) {
        println(item)  //4 3 2 1 0
    }

    for (item in arr1.size - 1 downTo 0 step 2) {
        println(item)  //3 1
    }

    for (item in 10 downTo 0 step 2) {  
        println(item)
    }//10 8 6 4 2
    
    for (item in 0 downTo 10 step 2) {  
        println(item)
    }//말이 안되는구나 아예 출력안됨

while문

일반

    var game = 5
    while (game < 10) {
        game++
    }
    
   var i = 4  //while문 변수 선언할때 조건식에서 값 계속 바뀌는거로 하려면 var로 선언~!!
    while (i > 1) {
        i--
        if (i == 3) break
    }
  • break문
    for (item in 10 downTo 0 step 2) {
        println(item)
        if (item == 4) {
            break
        }
 }
  • continue
    for (item in 1..10) {
        if (item % 2 !== 0) {
            continue
        }
        println(item)
    }

do while

    var nowgame3 = 6
    val match3 = 6
    do {
        println(" $nowgame3 이겼습니다 앞으로 ${match3 - nowgame3} 남았습니다")
        nowgame3++
    } while (nowgame3 < match3) 
profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍

0개의 댓글