while과 for 루프
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
- in 연산자를 사용해 어떤 값이 범위에 속하느지 검사 할 수 있다.
- !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
Author And Source
이 문제에 관하여(while과 for 루프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev_ksw/while과-for-루프저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)