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