조건문과 반복문

Anna·2024년 5월 21일

[TIL] Kotlin

목록 보기
5/28
post-thumbnail

조건문

if

if식에 어떤 조건식이 들어가고 그 조건식이 true일 경우 code1를 실행한다. 반대로 false인 경우에는 code1를 건너뛰고 code2를 실행한다.
만약에 조건을 걸어야 되는 것들이 여러가지면 else if, else를 사용한다. 더 추가할 경우에는 else if를 여러개의 붙여서 사용하면 된다.

✍️ 예제

fun main() 
{
    val a = 3
    val b = 5
    val c = 8
    val d = 10

    if (a < b) println("${a}${b}보다 작다.")     //true

    if (b > c) println("${b}${c}보다 크다.")
    else println("${b}${c}보다 작다.")           //true
 
    if (a > c) println("${a}${c}보다 크다.")
    else if (c > d) println("${c}${d}보다 크다.")
    else println("${c}${d}보다 작다.")           //true
}

👀 결과

35보다 작다.
58보다 작다.
810보다 작다.

when

여러 케이스에 대해 구분하기 위해 사용되며, if문을 사용하기엔 비교적 케이스가 많을 경우 사용한다. (else if를 많이 사용한다는 뜻)

기본 사용법

when (변수)
{
	비교값 1 -> {실행할 코드}
    비고값 2 -> {실행할 코드}
    ...
    else -> {변수 값이 앞의 비교값들과 다르면 실행할 코드}
}

✍️ 예제(1)

var num : Int = 2
when (num)
{
	1->{print("num is 1")}
	2->{print("num is 2")}
	else->{print("num is neither 1 nor 2")}
}

👀 결과

num is 2

✍️ 예제(2)

class MyClass

fun main()
{
    cases("Helo")
    cases(1)
    cases(System.currentTimeMillis()) //Long
    cases(MyClass()) //객체

}

fun cases(obj : Any)
{
    when (obj) {
        1 -> println("Int : ${obj}")
        "Hello" -> println("String : ${obj}")
        is Long -> println("Long : ${obj}")
        !is String -> println("Not a String")
        else -> println("Unknown")
    }
}

👀 결과

Unknown
Int : 1
Long : 1718168622301
Not a String
  • is : 자료형 체크

조건의 범위

조건의 범위를 설정해야 할 경우 in 연산자를 사용할 수 있다.
.. : 마지막 값 포함 O
until : 마지막 값 포함 X

fun solution(angle: Int): Int 
{
	when (angle) 
	{
		in 1 .. 89 -> return 1        //.. > 89포함 O
		90 -> return 2
		in 91 until 180 -> return 3   // until > 180포함 X
		180 -> return 4
	}
	return 0
}

반복문

for

특정 코드 범위를 반복해서 수행해야 할 경우 for문을 사용.

1. 일반적인 for문

for(a : Int in 1..10)
	print("$a")         // 1~10까지 반복한다. 
    
val len : Int = 5
for(b in 1..len)
	print("$b")        // 1~len(5)까지 반복한다. 

for (c in 1 until len)
	print("$c")       // 1~4까지 반복한다. 

2. 증가값 다양한 for문_step
step()를 사용해 증가값을 변경할 수 있다.
step에 들어간 변수는 const로 값이 고정되니 참고!
step은 음수를 지원하지 않다.

for(d: Int in 1..10 step(2))  //1, 3, 5, 7, 9
	print("$d")

for(e in 10..1 step(-1))     //error
	print("$e")

3. for 문 위에서 아래로_downTo
위에서 아래로 값을 하나씩 빼면서 내려온다.

for (f in 10 downTo 1)    // 10, 9, 8 ... 1
	print("$f")

for (g in 10 downTo 1 step(2))  // 10, 8, 6, 4, 2
	print("$g")

4. 배열을 for문을 이용해 출력하기_IntArray
배열값을 거꾸로 얻어오려면 .reversed()함수를 이용하거나 .count()함수를 이용해 좀 더 유연하게 사용할 수 있다.

val arr : IntArray = intArrayOf(5, 10, 15, 20, 25)

for(i in arr)   
	print("$i")             // 5, 10, 15, 20, 25

for(i in arr.reversed())    
	print("$i")             //30, 25, 20, 15, 10, 5

val list = listOf("korea", "water", "ㅇㅅㅇ")
for(i in list)    
	print("$i")             // korea, water, ㅇㅅㅇ

for(i in 0 until list.count())
	print("${list[i]}")     // korea, water, ㅇㅅㅇ

while

주어진 조건에 만족하는 동안 코드 블럭을 반복적으로 실행하는 반복문이다.
whiledo while의 차이는 최초 1회 실행 여부의 차이다.

✍️ while문 예제

import kotlin.random.Random

fun main()
{
    var a = Random.nextInt(10)         //변수a를 랜덤으로 생성하기
    println(a)                         //변수a를 먼저 확인하기 위해 출력
    println()
 
    while(a>0)
    {
        if (a % 2 == 0)
        {
            println("${a} is even")
            a--
            continue
        }
        else
        {
            println(a)
            a--
        }
    }
}

👀 결과

8               //변수a는 8이라는 랜덤 숫자가 나옴.
---
8 is even
7
6 is even
5
4 is even
3
2 is even
1

✍️ do while문 예제

fun main()
{
    var b = Random.nextInt(10)
    println(b)
    println("---")

    do
    {
        if (b % 3 == 0)
        {
            println("${b} braek!!")
            break
        }
        b--
    } while (b>0)


}

👀 결과

5
---
3 braek!!

반복문 안의 구문이 실행되는 중, continue구문을 만나면 해당 반복문으로 다시 돌아간다.
반복문 안의 구문이 실행되는 중, break구문을 만나면 반복문을 빠져나간다.

0개의 댓글