본문 바로가기
언어/Kotlin

[Kotlin 문법 종합] - 조건식, 반복문

by 젼젼39 2024. 3. 5.

1. 조건식

1. if-else

//false일 경우를 고려하지 않을 때
if(조건식) {
	//실행할 코드
}

//true, false 2가지 경우
if(조건식){
	//true일 경우 실행
} else {
	//false일 경우 실행
}

 

2. when

when(변수 또는 상수){
	값1 -> {
    	//실행할 코드
    }
    값2 -> {
    	//실행할 코드
    }
    else -> {
    	//실행할 코드
    }
}

//예시
var myNumber = readline()!!.toInt()

when(myNumber) {
	1 -> {
    	//코드
    }
    2 -> {
    	//코드
    }
    else -> {
    	//코드
    }
}
when(x){
    0,1 -> println("0,1")
    else -> println("else")
}

//0,1인 경우를 묶는 것 가능
when(x){
    parseInt(s) -> println("same")
    else -> println("different")
}

//x가 함수의 반환값과 일치하면 문장을 실행하도록
when(x){
    in 1..10 -> println("1~10")
    !in 20..30 -> println("20~30 아님")
    else -> println("포함되지 않음")
}
var score = resdLine()!!.toDouble()
var grade : Char = 'F'

when{ 		//인자가 없다!
    score >= 90.0 -> grade = 'A'
    score in 80.0..89.9 -> grade = 'B'
}
val str = "Hello"
val result = when(str){
    is String -> "문자열"
    else -> false
}

//str의 자료형이 문자열인지 확인 후, 결과를 다시 result에 할당함
fun main(){
    cases("Hello")
    cases(1)
    cases(System.currentTimeMillis()) 	//현재 시간을 Long 타입으로 리턴
    cases(MyClass()) 	//객체
}

fun cases(obj : Any){
    when(obj){
        1 -> ~~
        "Hello" -> ~~
        is Long -> ~~
        !is String -> ~~
        else -> ~~
    }
}

//다양한 자료형의 인자 받기

 

2. 반복문

1. for

    (1) 리스트에서 요소들을 가져오는 방식

var fruits = arrayOf("사과", "배", "딸기", "포도")

for(fruit in fruits){
	if(fruit == "배") {
    	println("배 발견")
    	break 		//반복문 탈출, 다음 블록으로 이동
    } else {
    	println("아직...")
        //continue 시 이후의 코드를 실행하지 않음.
        //반복문 탈출은 아님. 반복문 처음으로 돌아감
    }
}

    (2) 숫자의 범위를 지정하는 방식

for(i in 1..5){ 		//1,2,3,4,5 총 5번 반복. 이하
	println("${i}번째")
}

for(j in 1 until 5){ 		//1,2,3,4 총 4번 반복. 미만
	//until 생략하고 시작값..마지막값 해도 ㄱㅊ
    //여기선 i++ 할 수 없음... i 가 val로 취급됨
}
for (i in 5 downTo 1)
    print(i)

//역순으로 출력
for (i in 1..5 step 2)
    print(i)
    

//2씩 변화

 

//break, continue에 라벨 활용하기

fun breakLabel(){
     first@ for(i in 1..5){
         second@ for (j in 1..5){
             if(j==3)
                 break@first
                 println("i:$i, j:$j")
         }
         println("after j")
     }
     println("after i")
}

//first에서 탈출함

 

 

2. while

var i = 0

while(i<10){
	//코드
    i++ 	//증감식 작성
}