조건문
if문
- 예시
fun main() {
fun ifTest(arg: Int) {
if(arg > 10){
println("arg > 10")
}else if(arg > 100){
println("arg > 100")
}else{
println("arg <= 10")
}
}
ifTest(arg = 20)
}
// 결과
// arg > 10
- kotlin에서 if문은 표현식(expression)
- 표현식: 결과 값이 발생하며 변수에 if문의 결과 대입 가능
fun main() {
fun ifTest(arg: Int) {
val result = if(arg > 10){
println("arg > 10")
arg
}else if(arg > 100){
println("arg > 100")
arg
}else{
println("arg <= 10")
arg
}
println("result : $result")
}
ifTest(arg = 20)
}
// 결과
// arg > 10
// result : 20
- 주의 사항
- 최종 결과값은 if 또는 else if 표현식 내의 마지막 줄에 작성한다.
- else 문이 필수적으로 있어야한다.
- kotlin에서는 삼항 연산자가 존재하지 않는다.
when
fun main() {
// 값으로 분기
val data1 = "hello"
when(data1){
"hello" -> println("data1 is hello")
"world" -> println("data1 is wrold")
else -> println("data1 is not hello and world")
}
// 결과 : data1 is hello
// 여러 조건을 한꺼번에 분기
val data2 = 20
when(data2){
10, 20 -> println("data2 is 10 or 20")
30, 40 -> println("data2 is 30 or 40")
}
// 결과 : data2 is 10 or 20
// 범위로 분기
val data3 = 30
when(data3){
in 10..20 -> println("10 <= data3 <= 20")
in 21..30 -> println("21 <= data3 <= 30")
}
// 결과 : 21 <= data3 <= 30
}
- if문과 같이 표현식으로 사용 가능
val data4 = 2
val result = when(data4){
1 -> "1"
2 -> "2"
else -> {
"else"
}
}
println(result)
// 결과 : 2
- 주의사항
- kotlin에서는 witcc-case 문이 없다.
반복문
for
fun main() {
var sum = 0
for(i in 1..10){
sum += i
}
println(sum)
}
// 결과 : 55
- forEach 메소드로 작성 가능
val arr = arrayOf("Apple", "Pear", "Grape", "Orange")
arr.forEach {
println(it)
}
- 순회 조건 명시
- for(i in 1..10){…} : 1부터 10까지 숫자를 1씩 증가
- for(i in 1 until 100){...} : 100은 포함하지 않음
- for(i in 2..10 step 2){...} : 2씩 증가
- for(i in 10 downTo 1){...} : 숫자 감소
- for(i !in 1..10){…}: i가 해당 범위에 불포함
fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'
fun isNotDigit(c: Char) = c !in '0'..'9'
fun main(args: Array) {
println(isLetter('q'))
println(isNotDigit('x'))
}
- 컬렉션 순회 방법
fun main() {
val list = listOf<String>("Hello", "World", "!", "?")
val sb = StringBuffer()
for (str in list) {
sb.append(str)
}
println(sb)
}
// 결과 : HelloWorld!?
- indices를 사용하여 컬렉션에서 인덱스 이용 방법: 0 until 식별자의 크기
fun main() {
val list = listOf<String>("Hello", "World", "!", "?")
val sb = StringBuffer()
for (i in list.indices) {
print("${list[i]} ")
}
}
// 결과 : Hello World ! ?
- withIndex()를 사용하여 컬렉션에서 인덱스와 값 모두 이용하는 방법
fun main() {
val list = listOf<String>("Hello", "World", "!", "?")
val sb = StringBuffer()
for ((index, value) in list.withIndex()) {
println("$index is $value")
}
}
//결과
//0 is Hello
//1 is World
//2 is !
//3 is ?
while문
- kotlin에서는 swith-case문이 없다.
fun main() {
var x = 0
var sum = 0
while(true){
sum += ++x
if(x == 10) break
}
println(sum)
}
// 결과 : 55
- do-while문 사용 가능
// 처음에 x가 음수면 실행하지 않음
while (x >= 0) {
x--
}
// 처음에 x가 음수여도 1번은 실행
do {
x--
} while (x >= 0)
- 주의사항
- case없이 비교할 값만 입력하고 →를 이용하여 실행 문장을 작성
- 실행문장이 두줄 이상일 경우 중괄호를 이용하여 감싸기
- break문을 사용하지 않아도 된다.
- 조건에 범위를 지정할 수 있다.
- in: 해당 범위에 값이 속하는지
- 1..9: 1 이상 9 이하
- n in 1..9: n≥1 && 1≤9
- else가 swith-case의 default를 대체한다.
- case없이 비교할 값만 입력하고 →를 이용하여 실행 문장을 작성
repeat
- 문법이 아닌 내부에 정의 되어있는 함수
- 파라미터로 반복할 횟수를 전달하면 코드 블럭의 내용을 파라미터로 전달된 횟수만큼 반벅
- 내부적으로는 for문을 호출하는 것으로 구현되어 있음
repeat(3) {
println("${it}번 반복중...")
}
label(라벨)
- 특정 위치를 마은대로 이름을 정하고 continue문이나 break문에서 지정한 반복문을 벗어나게 함
fun main() {
aaa@ for(i in 1..3){
for (j in 1..3) {
if(j > 1) break@aaa
println("i: $i , j: $j")
}
}
}
// 결과 : i: 1 , j: 1
예제 복습
- 90점 이상이면 A, 80 이상이면 B, 그 외는 F를 출력하는 코드
[If문]
fun ifTest(score: Int) {
if(score > 90){
println("A")
}else if(score > 80){
println("B")
}else{
println("F")
}
}
}
-> 오답 노트: "이상"이므로 score>=90, score>=80으로 정확하게 표현하기
[when문]
fun ifTest(score: Int) {
println(when(score){
in 100..90 -> "A"
in 90..80 -> "B"
else -> "F"
})
}
-> 오답 노트: when에서 범위는 작은수에서 큰수로 표현 -> in 90..100, in 80..90
2. 1부터 10까지의 짝수만 출력하기
for(i in 1..10){
if(i%2==0){
println(i)
}
}
var i=1
while(i<=10){
if(i%2==0){
println(i)
}
i++
}
3. while을 이용하여 3의 배수를 30까지 출력
var i=1
while(i<=30){
if(i%3==0){
println(i)
}
i++
}
미니 퀴즈
1. 아래 when 문에서 score가 85일때 출력 결과는?
val score = 85
val grade = when(score) {
in 90..100 -> "A"
in 80..89 -> "B"
else -> "F"
}
println(grade)
답: B
2. 아래 코드를 실행했을 때 출력되는 값은?
var sum = 0
for (i in 1..5) {
sum += i
}
println(sum)
답: 15
3. if문에서 else는 필수일까? 그 이유와 함께 서술하시오.
답: 필수가 아니다. if 문 단독으로 사용이 가능하며 else-if문을 사용할 경우 else가 필요하다.
4. 다음 중 Kotlin에서 변수 선언이 올바른 것을 모두 고르시오.
a) val name: String = "Hope"
b) var age = 25
c) name = "Joy"
d) var score: Int
답: a, b
5. 아래 코드에서 에러가 발생하는 부분과 수정 방법을 서술하시오.
var i = 1
while(i > 5) {
println(i)
i++
}
답: while문에서 i>5 조건은 항상 false이므로 while문이 실행되지 않으므로 whie(i<=5) 수정이 필요함
'개발새발 > 코틀린' 카테고리의 다른 글
[코틀린/Kotlin] 상속과 인터페이스/추상클래스 (2) | 2025.08.13 |
---|---|
[코틀린/Kotlin] 함수 및 클래스 구조 (1) | 2025.08.12 |
[코틀린/Kotlin] 자료형과 변수 (5) | 2025.08.09 |
[Kotlin] 코틀린의 자료형 (데이터 타입) (2) | 2024.01.03 |
[Kotlin] Kotlin, JAVA랑 무엇이 다를까? (0) | 2023.09.06 |