GDSC HUFS 3기/Android with Kotlin Team 1
[1팀] Section 6: Kotlin - Decisions and Loops
dev-yen
2021. 10. 7. 03:28
이 글은 udemy 강의를 참고하여 작성하였습니다.
작성자 : 이승민
개발환경은 Windows, Android Studio입니다.
1. 반복문 (Loops)
while
( ) 안의 조건이 참 일 경우 반복을 실행한다.
var x = 10
while (x > 0) {
Log.i("x = ", "$x")
x--
}
// x = 10
// x = 9
// x = 8
// x = 7
// x = 6
// x = 5
// x = 4
// x = 3
// x = 2
// x = 1
// 마지막엔 x = 0이 되어 조건 False -> 반복 종료
do-while
while문과 거의 유사하지만 do-while문은 최소 한번은 실행한다는 점에서 다르다.
var x = 10
do {
x++
Log.i("In the do block and x = ", "$x")
} while (x < 10)
// In the do block and x = 11
// while문이였다면 조건이 거짓이여서 while문을 실행하지 않지만
// do-while문에서는 최소 한 번은 실행해야하므로 반복을 실행한다.
for
for문의 반복 횟수는 다양하게 설정할 수 있다.
for (index in 1..5) // 1부터 5까지 5번의 반복을 수행
for (index in 'A'..'Z') // 범위는 정수뿐 아니라 문자도 가능(대,소문자 구분)
for (index in "Hello World") // 'H'부터 'd'까지 공백을 포함하여 11번의 반복을 수행
for (index in 100 backto 90) // 100부터 90까지 내림차순으로 11번의 반복을 수행
for (index in 1 until 10) // 1부터 9까지 9번의 반복을 수행(until x에서 x-1까지 반복)
for (index in 1 until 10 step 2) // 1부터 9까지 2씩 증가하며 수행(1, 3, 5, 7, 9)
이런 식으로도 사용 가능하다.
var rangeNumber = listOf(1, 2, 3, 5)
for (index in rangeNumber) Log.i("INDEX : ", "$index")
// INDEX : 1
// INDEX : 2
// INDEX : 3
// INDEX : 5
break & continue
반복문을 빠져나오고 싶을 때 사용한다.
- break
var countDown = 10 while (countDown > 0) { if (countDown == 5) { break } Log.i("COUNTDOWN ! : ", "$countDown") countDown-- } // COUNTDOWN ! : 10 // COUNTDOWN ! : 9 // COUNTDOWN ! : 8 // COUNTDOWN ! : 7 // COUNTDOWN ! : 6 // countDown이 5일 때 break문을 만나서 해당 반복문을 빠져 나왔기 때문에 반복 종료!
- continue
var countUp = 0 while (countUp < 10) { countUp++ if (countUp > 5) { continue } Log.i("INSIDE : ", "$countUp") } Log.i("OUTSIDE : ", "$countUp") // INSIDE : 1 // INSIDE : 2 // INSIDE : 3 // INSIDE : 4 // INSIDE : 5 // OUTSIDE : 10 // countUp이 5이상일 때 continue를 만나 해당 반복문을 빠져나왔지만, // 아래 코드를 실행하는 것이 아니라 다음 반복을 실행한다.
2. 조건문 (Conditions)
if문
조건이 참 일 경우 해당 조건문 실행한다.
여러 조건을 하고 싶을 때는 else if와 else를 사용 가능하다.
val x = 10
val y = 20
var largest = "St"
if (x > y) {
largest = "X"
} else if (x == y) {
largest = "EQUAL"
} else {
largest = "Y"
}
// y가 x보다 크므로 largest = "Y" !!
코틀린에서 if~else를 표현식으로도 사용 가능하다.
var data = 10
val result = if (data > 0) {
println("data > 0")
true // 참일 때 반환값
} else {
println("data <= 0")
false // 거짓일 때 반환값
}
println(result)
// data > 0
// true
when문
타 언어의 switch문과 유사한 조건문으로 () 안에 넣은 데이터가 조건이 되고 이 값을 비교하며 실행한다.
var mike = 19
var john = 17
when (mike) {
16 -> println("Mike is 16 years old")
17 -> println("Mike is 17 years old")
18 -> println("Mike is 18 years old")
19 -> println("Mike is 19 years old")
else -> println("Mike is < 16 or adult")
}
// "Mike is 19 years old"
when문의 조건을 문자열 값 뿐만 아니라, 범위나 데이터 타입 등으로 비교할 수도 있다.
또한, when문의 ()안에 데이터를 넣지 않을 수도 있다.
var age = 17
var isAdult: Any = false
when {
isAdult is String -> println("isAdult is String")
age >= 20 || isAdult == true -> println("Adult")
age >= 17 && age < 20 -> println("High school")
age >= 14 && age < 17 -> println("Middle school")
else -> println("Kid")
}
// High school
when문 또한 표현식으로 사용하여 결과를 반환할 수 있다. 이 때는, else문을 생략할 수 없다.
var age = 13
val result = when {
age >= 20 -> "Adult"
age >= 8 && age < 20 -> "Student"
else -> "Kid"
}
println(result)
// Student