반응형
728x90
반응형
while, do~while
Kotlin에서 while, do~while문 사용은 Java와 동일하다.
새로 추가된 기능도 없다.
for루프
- 코틀린에는 자바의 for에 해당하는 요소가 없다.
- 이런 루프의 가장 흔한 용례인 초기값, 증가값, 최종값을 사용한 루프를 대신하기 위해 코틀린에서는 범위(range)를 사용한다.
- 범위는 기본저긍로 두 값으로 이뤄진 구간이다.
- 보통은 그 두 값은 정수 등의 숫자 타입의 값이며, .. 연산자로 시작 값과 끝 값을 연결해서 범위를 만든다.
// 양 끝을 포함하는 구간 : 10까지 포함
val oneToTen = 1..10
어떤 범위에 속한 값을 일정한 순서로 이터레이션하는 경우를 수열(progression)이라고 부른다.
예제
fun fizzBuzz(i: Int) = when {
i % 15 == 0 -> "FizzBuzz"
i % 3 == 0 -> "Fizz"
i % 5 == 0 -> "Buzz"
else -> "$i"
}
- 범위 : 1 <= i <= 100
fun main() {
for (i in 1..100) {
println(fizzBuzz(i))
}
}
- 범위 : 1 <= i < 100 (100을 포함하지 않는다.)
fun main() {
// 1 ~ 99
// 마지막 100을 포함하지 않기 위한
for (i in 1 until 100) { // = for (i in 1 .. 100-1)
println(fizzBuzz(i))
}
}
- 범위 : 100 >= i >= 1 (증가값: -2)
fun main() {
// 100 downTo 1 : 역방향 수열을 만든다.. (기본 증가 값이 -1)
// step 2 를 붙이면, 증가 값의 절댓값이 2로 바뀐다. (증가 값의 방향은 바뀌지 않고, 증가값은 실제로 -2)
for (i in 100 downTo 1 step 2) {
println(fizzBuzz(i))
}
}
Buzz
98
Fizz
94
92
FizzBuzz
. . .
8
Fizz
4
2
Map 이터레이션
fun main() {
// key 에 대한 정렬을 위해 treeMap 사용
val binaryReps = TreeMap<Char, String>()
for(c in 'A'..'F') { // A 부터 F까지
val binary = Integer.toBinaryString(c.toInt()) // 아스키코드 -> 2진표현으로 바꾼다.
binaryReps[c] = binary // key : c, value : 2진표현
// binaryReps.put(c, binary) // 위 코드와 동일
}
}
- key : c, value : 2진표현 binary 변수
// 동일한 코드
binaryReps[c] = binary
binaryReps.put(c, binary)
- Map 이터레이션 수행
// Map에 대해 이터레이션한다.
// Map의 Key와 value를 두 변수에 각각 대입한다.
for ((letter, binary) in binaryReps) {
println("$letter = $binary")
}
- list 에서 index와 함께 컬렉션을 이터레이션하기
val list = arrayListOf("10", "11", "1001")
// 인덱스와 함께 컬렉션을 이터레이션한다.
for ((index, element) in list.withIndex()) {
println("$index: $element")
}
in으로 원소검사
- 글자인지 체크
// 글자인지 체크
// c in 'a'..'z' -> 'a' <= c && c <= 'z'
fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'
- 숫자가 아닌지 체크
// 숫자가 아닌지 체크
fun isNotDigit(c: Char) = c !in '0'..'9'
- when절 사용
fun recognize(c: Char) = when (c) {
in '0'..'9' -> "It's a digit!" // c 값이 0부터 9 사이에 있는지 검사한다.
in 'a'..'z', in 'A'..'Z' -> "It's a letter!"
else -> "I don't know..."
}
- main 함수 수행
fun main() {
println(isLetter('q'))
println(isNotDigit('x'))
println(recognize('8'))
// "Java" <= "Kotlin" && "Kotlin" <= "Scala"
println("Kotlin" in "Java".."Scala")
}
반응형
'Coding > Kotlin' 카테고리의 다른 글
[Kotlin in Action] 7. 코틀린 컬렉션 만들기 (Set, Map, List) (0) | 2022.05.17 |
---|---|
[Kotlin in Action] 6. 예외처리 (throw, try~catch~finally) (0) | 2022.05.16 |
[Kotlin in Action] 4. enum 과 when, 클래스 계층과 스마트 캐스트 (0) | 2022.05.14 |
[Kotlin in Action] 3. 클래스, 프로퍼티 (0) | 2022.05.13 |
[Kotlin in Action] 2. 변수, 문자열 템플릿 (0) | 2022.05.12 |