while과 for 루프

siwan·2021년 10월 29일
0

코틀린 기초

목록 보기
4/6

while 루프

코틀린에서 while과 do-while 루프가 있다.
두 루프의 문법은 자바와 다르지 않다.

while(조건){  //조건이 참이 될때까지 본문을 반복 실행한다.
  /*...*/
}

do{   //맨 처음에 본문을 한 번 실행한 다음. 조건이 참인 동안 본문을 반복 실행

}while(조건)

수에 대한 이터레이션: 범위와 수열

코틀린에는 자바의 for 루프(변수를 초기화 하고 루프를 실행 할때마다 갱신하고 루프 조건이 거짓이 될때 반복을 마치는 형태의 루프)에 해당하는 요소가 없다.
루프를 대신하기 위해 코틀린에서는 범위(range)를 사용한다.

val oneToTen= 1..10

when을 사용해 피즈버즈 게임 구현(주석 코드 설명)


fun fizzBuzz(i: Int) = when { //return값 문자열로 반환 생략
        i % 15 == 0 -> "FizzBuzz" //정수값 i 가 15로 나눠지면 FizzBuzz로 반환
        i % 3 == 0 -> "Fizz" // 정수값 i 가 3로 나눠지면 Fizz로 반환
        i % 5 == 0 -> "Buzz" 정수값 i 가 5로 나눠지면 Buzz로 반환
        else -> "$i" //그 외는 자신의 숫자로 반환
}

for (i in 1..100){   //1..100까지의 정수에 대해 이터레이션 한다.
     println(fizzBuzz(i))
}

>>> 1 2 Fizz 4 Buzz Fizz 7 ...
증가 값을 갖고 범위 이터레이션 하기(주석 코드 설명)
   for (i in 100 downTo 1 step 2){ //downTo : 100에서 1까지 역방향으로 내려온다. 
                                     step : 2 정수값을 건너뛴다.
     println(fizzBuzz(i))
 }
 
 >>> Buzz 98 Fizz 94 92 FizzBuzz 88 ...
  • 맵에 대한 이터레이션
        val binaryReps = TreeMap<Char,String>() //키에 대해 정렬하기 위해 TreeMap 이용

        for (c in 'A'..'F'){ //A 부터 F까지 문자의 범위를 사용해 이터레이션 한다.
            val binary = Integer.toBinaryString(c.code) //아스키 코드를 2진 표현으로 변경
            binaryReps[c] = binary //c를 키로 c의 2진 표현을 맵에 넣는다.
            (자바에서는 binaryReps.put(c,bianry)로 코딩
        }

        for ((letter,binary) in binaryReps){ //맵에 대해 이터레이션 한다. 맵의 키와 값을 두변수에 각각 대입한다.
            println("$letter = $binary")
        }
        
 >>>
A = 1000001
B = 1000010
C = 1000011
D = 1000100
E = 1000101
F = 1000110

이터레이션에는 숫자 값이 아닌 문자 타입의 값에도 적용 할 수 있다.

in으로 컬렉션이나 범위의 원소 검사

fun isLetter(c:Char) = c in 'a'..'z' || c in 'A'..'Z' // 'a' <= c && c <= 'z'로 변환
fun isNotDigit(c:Char) = c !in '0'..'9'
println(isLetter('A'))
println(isNotDigit('0'))


true
false
  1. in 연산자를 사용해 어떤 값이 범위에 속하느지 검사 할 수 있다.
  2. !in 연산자를 통해 어떤 값이 범위에 속하지 않는지 검사 할 수 있다.
다른 예제

-when 에서 in 사용하기
fun reconzine(c:Char) = when(c){
  in '0'..'9' -> "It's a digit"
  in 'a'..'z', in 'A'..'Z' -> "It's a letter"
  else -> "i don`t know.."
 }
 
  println(reconzine('A'))
  
  >>>It's a letter
  
  
 -setOf를 이용한 in 사용하기
 
  println("Kotlin" in setOf("JAVA","Scala"))
  >>>false
  
profile
station3 다방 안드로이드 개발자

0개의 댓글