🔀 조건문
📖 조건문이란?
조건문은 상황에 따라 다른 코드를 실행합니다. "만약 ~라면"의 논리를 코드로 표현합니다.
💡 if 문
기본 사용법
fun main() {
val age = 20
if (age >= 18) {
println("성인입니다")
}
// 출력: 성인입니다
}
if-else
fun main() {
val score = 75
if (score >= 80) {
println("합격입니다!")
} else {
println("불합격입니다.")
}
// 출력: 불합격입니다.
}
if-else if-else
fun main() {
val score = 85
if (score >= 90) {
println("A학점")
} else if (score >= 80) {
println("B학점")
} else if (score >= 70) {
println("C학점")
} else {
println("F학점")
}
// 출력: B학점
}
🎨 if는 표현식
Kotlin의 if는 값을 반환할 수 있습니다!
fun main() {
val age = 20
// if를 표현식으로 사용
val message = if (age >= 18) {
"성인입니다"
} else {
"미성년자입니다"
}
println(message) // 성인입니다
// 한 줄로도 가능
val status = if (age >= 18) "성인" else "미성년자"
println(status) // 성인
}
🌟 when 문
기본 사용법
fun main() {
val grade = 'B'
when (grade) {
'A' -> println("최고예요!")
'B' -> println("좋아요!")
'C' -> println("괜찮아요")
'D' -> println("노력하세요")
'F' -> println("재수강하세요")
else -> println("알 수 없는 학점")
}
// 출력: 좋아요!
}
when도 표현식
fun main() {
val grade = 'B'
val message = when (grade) {
'A' -> "최고예요!"
'B' -> "좋아요!"
'C' -> "괜찮아요"
else -> "노력하세요"
}
println(message) // 좋아요!
}
여러 값 매칭
fun main() {
val day = 6
val dayType = when (day) {
1, 2, 3, 4, 5 -> "평일"
6, 7 -> "주말"
else -> "잘못된 요일"
}
println(dayType) // 주말
}
범위로 매칭
fun main() {
val score = 85
val grade = when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
in 60..69 -> "D"
else -> "F"
}
println("학점: $grade") // 학점: B
}
조건식으로 매칭
fun main() {
val temperature = 25
val weather = when {
temperature < 0 -> "매우 춥습니다"
temperature < 10 -> "춥습니다"
temperature < 20 -> "시원합니다"
temperature < 30 -> "따뜻합니다"
else -> "덥습니다"
}
println(weather) // 따뜻합니다
}
타입 체크
fun main() {
val value: Any = "Hello"
when (value) {
is String -> println("문자열: $value")
is Int -> println("정수: $value")
is Boolean -> println("불리언: $value")
else -> println("알 수 없는 타입")
}
// 출력: 문자열: Hello
}
🆚 if vs when
언제 뭘 쓸까?
// ✅ 2-3가지 분기 → if
fun main() {
val age = 20
if (age >= 18) {
println("성인")
} else {
println("미성년자")
}
}
// ✅ 여러 분기 → when
fun main() {
val grade = 'B'
when (grade) {
'A' -> println("최고")
'B' -> println("좋음")
'C' -> println("보통")
'D' -> println("나쁨")
'F' -> println("매우 나쁨")
}
}
🎯 실전 예제
BMI 판정
fun main() {
val height = 1.75 // 미터
val weight = 70.0 // kg
val bmi = weight / (height * height)
val result = when {
bmi < 18.5 -> "저체중"
bmi < 23.0 -> "정상"
bmi < 25.0 -> "과체중"
bmi < 30.0 -> "비만"
else -> "고도비만"
}
println("BMI: %.1f → $result".format(bmi))
}
계절 판별
fun main() {
val month = 7
val season = when (month) {
in 3..5 -> "봄"
in 6..8 -> "여름"
in 9..11 -> "가을"
12, 1, 2 -> "겨울"
else -> "잘못된 월"
}
println("${month}월은 ${season}입니다")
// 출력: 7월은 여름입니다
}
홀짝 게임
fun main() {
val number = (1..100).random()
val result = if (number % 2 == 0) {
"짝수"
} else {
"홀수"
}
println("랜덤 숫자: $number → $result")
}
로그인 검증
fun main() {
val username = "admin"
val password = "1234"
if (username == "admin" && password == "1234") {
println("로그인 성공!")
} else if (username != "admin") {
println("아이디를 확인하세요")
} else {
println("비밀번호를 확인하세요")
}
}
🤔 자주 묻는 질문
Q1. if 없이 when만 써도 되나요?
A: 네! when이 더 강력합니다.
fun main() {
val score = 85
// if 방식
val grade1 = if (score >= 90) "A"
else if (score >= 80) "B"
else if (score >= 70) "C"
else "F"
// when 방식 (더 깔끔!)
val grade2 = when {
score >= 90 -> "A"
score >= 80 -> "B"
score >= 70 -> "C"
else -> "F"
}
}
Q2. when에서 else는 필수인가요?
A: 표현식으로 쓸 때는 필수입니다!
fun main() {
val grade = 'B'
// ✅ 표현식 - else 필수
val message = when (grade) {
'A' -> "최고"
'B' -> "좋음"
else -> "기타" // 필수!
}
// ✅ 문장 - else 선택
when (grade) {
'A' -> println("최고")
'B' -> println("좋음")
// else 생략 가능
}
}
Q3. 중괄호는 언제 쓰나요?
A: 여러 줄 코드가 있을 때!
fun main() {
val score = 95
if (score >= 90) {
println("축하합니다!")
println("A학점입니다!")
println("장학금 대상입니다!")
}
// 한 줄이면 생략 가능
if (score >= 90) println("A학점")
}
🎬 마치며
조건문으로 프로그램에 지능을 부여하세요!
핵심 정리:
✅ if-else - 2-3가지 분기
✅ when - 여러 분기 (더 강력!)
✅ if와 when 모두 표현식으로 사용 가능
✅ 범위, 타입, 조건식 다양하게 활용
다음 단계: 반복문에서 for와 while을 알아보세요!