Kotlin 입문 [04] - Kotlin에서 조건문 작성하기
학습할 내용
- 불리언 표현식을 작성하는 방법
if/else문을 작성하는 방법when문을 작성하는 방법if/else표현식을 작성하는 방법when표현식을 작성하는 방법- 쉼표를 사용하여
when조건문에서 여러 브랜치의 공통 동작을 정의하는 방법 in범위를 사용하여when조건문에서 다양한 브랜치의 공통 동작을 정의하는 방법is키워드를 사용하여when조건문을 작성하는 방법
if/else 문을 사용하여 조건 표현
Kotlin에서는 프로그램이 조건에 따라 다른 작업을 실행하도록 하려면 if/else 문을 사용하면 됩니다.
불리언 표현식으로 if 조건 작성
불리언 표현식은 비교 연산자로 구성됩니다.
1 == 1
Kotlin 플레이그라운드를 열고 기존 코드를 다음 프로그램으로 바꿉니다.
fun main() {
println(1 == 1)
}
프로그램을 실행한 후 출력을 확인합니다.
true
불리언 표현식은 불리언 값인 true 값을 반환합니다.
비교 연산자
- 미만:
<- 초과:
>- 이하:
<=- 이상:
>=- 같지 않음:
!=
간단한 if 문 작성
if 문의 문법은 다음과 같습니다.
if(조건) {
본문
}
중괄호 안에 있는 본문은 if 조건 불리언 표현식이 true 값을 반환할 때만 실행됩니다.
빨간색 신호등 조건에 관한 if 문을 작성합니다.
main() 함수에 trafficLightColor 변수를 만들고 "Red" 값을 할당합니다.
fun main() {
val trafficLightColor = "Red"
}
if 문을 추가하고 trafficLightColor == "Red" 표현식을 전달합니다.
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
}
}
if 문 본문에 println() 함수를 추가하고 "Stop" 인수를 전달합니다.
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
println("Stop")
}
}
프로그램을 실행한 수 출력을 확인합니다.
Stop
trafficLightColor == "Red" 표현식은 true 값을 반환하므로 println("Stop") 문이 실행되어 Stop 메시지가 출력됩니다.
else 브랜치 추가
if/else 문을 만들려면 else 브랜치를 추가해야 합니다. else 브랜치는 if 브랜치 다음에 와야 합니다.
if(조건) {
본문1
} else {
본문2
}
else 문의 중괄호 안에 if 브랜치의 조건이 false 일 때만 실행되는 두 번째 본문을 추가할 수 있습니다.
프로그램에 else 브랜치를 추가하고, trafficLightColor 변수에 "Green" 값을 할당합니다.
fun main() {
val trafficLightColor = "Green"
if (trafficLightColor == "Red") {
println("Stop")
} else {
println("Go")
}
}
프로그램을 실행한 후 출력을 확인합니다.
Go
trafficLightColor 변수에 "Green" 값을 할당했으므로 if 브랜치에서 평가된 trafficLightColor == "Red" 표현식은 false 값을 반환합니다. 따라서 프로그램은 if 브랜치에 있는 모든 코드를 건너뛰고 else 브랜치 내의 코드를 실행합니다.
else if 브랜치 추가
else if 브랜치는 항상 if 브랜치 뒤, else 브랜치 앞에 있습니다. 문에서 여러 else if 브랜치를 사용할 수 있습니다.
if(조건) {
본문1
} else if(조건2) {
본문2
} else if(조건3) {
본문3
} else {
본문4
}
else 브랜치가 없을 수도 있습니다.
if(조건) {
본문1
} else if(조건2) {
본문2
}
프로그램에 else if 브랜치를 추가하고, trafficLightColor 변수에 "Yellow" 문자열 값을 할당합니다.
fun main() {
val trafficLightColor = "Yellow"
if (trafficLightColor == "Red") {
println("Stop")
} else if(trafficLightColor == "Yellow") {
println("Slow")
} else {
println("Go")
}
}
프로그램을 실행한 후 출력을 확인합니다.
Slow
직접 해보기
현재 프로그램에서는 신호등이 빨간색이나 노란색 이외의 다른 색상인 경우 운전자는 여전히 이동하도록 권장받습니다. 신호등이 녹색일 때만 운전자가 주행하도록 하고 빨간색, 노란색, 녹색 외의 다른 값일 경우에는 예상대로 작동하지 않는다는 메시지를 전달해봅시다.
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
} else {
println("Invalid traffic-light color")
}
}
여러 브랜치에 when 문 사용
Kotlin에서는 여러 브랜치를 다룰 때 가독성을 높이기 위해 if/else 문 대신 when 문을 사용할 수 있습니다. 고려할 브랜치가 3개 이상인 경우 when 문을 사용하는 것이 좋습니다.
when(매개변수) {
조건1 -> 본문1
조건2 -> 본문2
조건3 -> 본문3
}
when 문으로 if/else 문 다시 작성
when 문을 사용하도록 프로그램을 변환합니다.
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
when 문에 더 복잡한 조건 작성
쉼표와 in 키워드, is 키워드를 사용하여 좀 더 복잡한 when 조건을 만드는 방법을 알아봅시다.
1 ~ 10 사이의 숫자가 소수인지 결정하는 프로그램을 빌드합니다.
x 변수를 정의하고 3 값을 할당합니다.
fun main() {
val x = 3
}
2, 3, 5, 7 조건의 여러 브랜치가 포함된 when 문을 추가합니다.
fun main() {
val x = 3
when (x) {
2 -> println("x is a prime number between 1 and 10.")
3 -> println("x is a prime number between 1 and 10.")
5 -> println("x is a prime number between 1 and 10.")
7 -> println("x is a prime number between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
프로그램을 실행한 후 예상대로 출력되는지 확인합니다.
x is a prime number between 1 and 10.
여러 조건에 쉼표 사용
쉼표를 사용하여 동일한 본문에 상응하는 여러 조건을 나타낼 수 있습니다.
fun main() {
val x = 3
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
프로그램을 실행한 후 예상대로 출력되는지 확인합니다.
x is a prime number between 1 and 10.
여러 조건에 in 키워드 사용
다양한 값을 사용하려면 범위 시작을 나타내는 숫자, 공백 없이 점 두개를 차례로 추가하고 범위 끝을 나타내는 또 다른 숫자로 종료합니다.
in 1..10
in 키워드로 다른 브랜치를 추가합니다. x 변수를 4 값으로 변경합니다.
fun main() {
val x = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
프로그램을 실행한 후 출력을 확인합니다.
x is a number between 1 and 10, but not a prime number.
is 키워드를 사용하여 데이터 유형 확인
is 키워드를 조건으로 사용하여 평가된 값의 데이터 유형을 확인할 수 있습니다.
x를 Any 유형이 되도록 수정합니다. x가 Int 유형 이외의 값이 될 수 있음을 나타내기 위합니다.
fun main() {
val x: Any = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
when 문에 is 키워드 코드를 추가하고, else 브랜치 본문을 수정합니다. x 변수는 20 값으로 변경합니다.
fun main() {
val x: Any = 20
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
is Int -> println("x is an integer number, but not between 1 and 10.")
else -> println("x isn't an integer number.")
}
}
프로그램을 실행한 후 출력을 확인합니다.
x is an integer number, but not between 1 and 10.
if/else 및 when을 표현식으로 사용
표현식으로의 조건문 문법은 각 브랜치의 본문 마지막 줄은 값 또는 표현식을 반환해야 하고 조건문은 변수에 할당됩니다.
val 변수이름 = if(조건) {
본문1
} else {
본문2
}
본문에 반환값 또는 표현식만 포함되어 있는 경우 중괄호를 삭제하여 코드를 더 간결하게 만들 수 있습니다.
val 변수이름 = if(조건) 표현식1 else 포현식2
if 문을 표현식으로 변환
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
} else {
println("Invalid traffic-light color")
}
}
if/else 문을 if/else 표현식으로 변환하여 반복을 삭제합니다. message 변수를 정의한 후 if/else 문을 할당합니다. println() 문 및 중괄호를 삭제합니다. 프로그램 끝에 println() 문을 추가한 후 message 변수를 인수로 전달합니다.
fun main() {
val trafficLightColor = "Black"
val message =
if (trafficLightColor == "Red") "Stop"
else if (trafficLightColor == "Yellow") "Slow"
else if (trafficLightColor == "Green") "Go"
else "Invalid traffic-light color"
println(message)
}
프로그램을 실행한 후 출력을 확인합니다.
Invalid traffic-light color
직접 해보기
when 문 대신 when 표현식을 사용하도록 프로그램을 변환합니다.
fun main() {
val trafficLightColor = "Amber"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow", "Amber" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
message 변수를 만들어 when 표현식을 할당합니다. 프로그램 끝에 println() 문을 추가한 후 message 변수를 인수로 전달합니다.
fun main() {
val trafficLightColor = "Amber"
val message = when (trafficLightColor) {
"Red" -> "Stop"
"Yellow", "Amber" -> "Slow"
"Green" -> "Go"
else -> "Invalid traffic-light color"
}
println(message)
}
정리
- Kotlin에서는
if/else또는when조건문을 사용하여 브랜치를 실행할 수 있습니다. - 브랜치가 3개 이상인 경우
if/else조건문 대신when조건문을 사용하는 것이 좋습니다. - 쉼표,
in,is키워드를 사용하여when조건문에서 좀 더 복잡한 조건을 작성할 수 있습니다. if/else및when조건문은 표현식으로 사용할 수 있습니다.
📚 참고: Android Developers 공식 Kotlin 학습 자료 본 글은 Android Developers의 Kotlin 교육 콘텐츠를 참고하여 재구성했습니다.
댓글남기기