Deperecated/Kotlin

코틀린 - 조건문, 분기문, 반복문

누알라리 2020. 2. 5. 14:19

1. 조건문

코틀린에서 추가된 것 = in 연산자와 범위 연산자로 조건식 간략하게 만들기

 

1-1. in 연산자& .. 연산자(범위)

변수 이름 in 시작값..마지막값
else if ( score >= 80.0 && score <= 89.9 )
else if( score in 80.0..89.9 ) { }

범위 연산자는 a..b일 때 a<= N <= b를 뜻한다.

 

2. 분기문 (when문)

조건이 많은 경우를 핸들링하는 경우. 조건을 창조할 수도, 여러 조건을 중첩해서 한 번에 처리할 수 있음.

 

JAVA의 Switch - case와 유사하다.

수식이나 값의 결과에 따라 수행될 부분을 결정하며, 다양한 타입의 값을 비교할 수 있음.
break 문이 없어도 한 블록의 코드가 모두 수행되면 바로 when문 밖으로 나가버린다.

 

2-1. 인자를 사용하는 when문

1. 인자에 일치하는 값
2. 인자에 일치하는 표현식
3. 인자에 일치하는 범위(in a..b)
4
. is 키워드를 사용하여 특정 자료형 검사
when(a1)
{
  1 ->
  2 ->
  3 ->
  4 ,5 ->
  else ->
}

when(a2)
{
  33.33 ->
  55.55 ->
}

when(a3)
{
  "문자열" ->
  "문자열 2" ->
  "문자열 3", "문자열 4" ->
  else ->
}

when(a4)
{
  in 1..3 ->
  in 4..6 ->

  !in 1..6 ->
  
  else ->
}

when(a5)
{
  is String ->
  is Boolean ->
}

 

 4. when절로 함수의 매개변수의 초기화를 할 수도 있다.

var a7 = f1(1)
var a8 = f1(2);
var a9 = f1(100);

println(a7);
println(a8);
println(a9);

fun f1(a1 : Int) = when(a1)
{
  1 ->
  {
    100
  }
  2 ->
  {
    200
  }
  3 ->
  {
    300
  }
  else -> 
  {
    400
  }
}

 

2-2. Any형을 통해 다양한 자료형의 인자 받기

fun case(obj : Any) {
	when(obj) {
    	is String ->
        is Boolean ->
        is Long ->
        !is String ->
        else ->
    }
}

 

2-3. 인자가 없는 when 문

when 문에 인자가 주어지지 않으면 조건이나 표현식을 직접 만들 수 있기 때문에 특정 인자에 제한하지 않고 다양한 조건을 만들 수 있다.
var score = readLine()!!.toDouble()
var comment = "안녕하세요"
var grade: Char = 'F'

when {
    score in 80..100 -> grade = 'A'
    score in 70.0..79.9 -> grade = 'B'
    comment is String -> "안녕하세요는 String 입니다."
    comment == "안녕히가세요" -> 
    }
	

 

3. 반복문

3-1. for문

코틀린의 for문은 in 연산자와 함께 사용된다.

내부적으로 반복을 처리하는 인터페이스인 이터레이터(Iterator)에 의해 배열이나 특정 값의 범위, 컬렉션으로 불리는 요소 등에서 사용할 수 있다.

※ 컬렉션(Array, List, Map 등 여러 데이터를 다루는 요소)는 모두 이터레이터(Iterator)라는 반복을 위한 인터페이스를 구현한다.

1. 기본형

for (x in 1..5) {
   println(x)
}

2. 하행형(in + downTo)

for( i in 5 downTo 1) print(i)

3. n단계씩 띄워서 계산 (in + step)

for(x in 1..5 step 2) print(x)

4. downTo + step

for(x in 5 downTo 1 step 2) print(x)

 

4. 람다에서 return 쓰기

- 나중에..

 

5. throw 키워드

의도적으로 예외를 발생시킴.
fun checkAmount(amout : int) {
	if(amout < 1000){
    	throw Exception("잔고가 떨어짐")
}

fun main() {
	try {
    	checkAmout()
        }
    catch (e : Exception) {
    	println(e.message)
     }
}

 

6. 사용자 정의 예외

기본 Exception 클래스로부터 새롭게 사용자가 정의한 예외 클래스를 만들 수 있다.
class <사용자 예외 클래스 이름>(message : String) : Exception(message)
class HyunndyException(message : String) : Exception(message)

fun checkname(name : String) {
	 if(name.matches("Hyunndy")) {
     	throw HyunndyException("watchout!")
 }
 
 fun main() {
 	try{
    	checkname("Hyunndy")
        }
    catch(e : Exception) {
      println(e.message)
    }
}

'Deperecated > Kotlin' 카테고리의 다른 글

코틀린 - 중첩 클래스  (0) 2020.02.05
코틀린 - 제네릭  (0) 2020.02.05
코틀린 - 클래스  (0) 2020.02.05
코틀린 - 고차함수와 람다식(기본 3에 이어서..)  (0) 2020.02.05
코틀린 - 기본  (0) 2020.02.05