이 포스팅은 고돈호 님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.
1.1 if 문
다음의 예시를 살펴보자
package kr.co.kibeom.basicsyntax
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() { // 새로운 블록의 시작
override fun onCreate(savedInstanceState: Bundle?) { // 4 칸 공백
super.onCreate(savedInstanceState) // 이전 4칸의 공백에 추가로 4칸의 공백 즉 8칸 공백
setContentView(R.layout.activity_main)
var myNumber = "1, 2, 3, 4, 5, 6"
var yourNumber = "1, 2, 3, 4, 5, 6"
if(myNumber == yourNumber) {
Log.d("checkIf", "myNumber와 yourNumber가 일치합니다.")
}
else {
Log.d("checkIf", "myNumber와 yourNumber가 다릅니다.")
}
}
}
myNumber와 yourNumber가 일치하므로 if문이 실행되어 myNumber와 yourNumber가 일치한다는 메시지가 뜨는 것을 확인할 수 있다. 이는 다음의 Log를 통해 알 수 있다.
반대로 일치하지 않다면 else문 안의 Log가 출력이 되는것을 알 수 있다.
1.2 if문 & else if문
이번에는 if문과 else if문의 차이점을 알아보자.
package kr.co.kibeom.controlflow1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var a = "abc"
var b = "abcde"
var c = "abcdefg"
// if 문 두번 사용
if (a.length < b.length) {
Log.d("ControlFlow", "1: a는 b보다 길이가 작습니다.")
}
if (a.length < c.length) {
Log.d("ControlFlow", "1: a는 c보다 길이가 작습니다.")
}
// else if문 사용
if (a.length < b.length) {
Log.d("ControlFlow", "2: a는 b보다 길이가 작습니다.")
} else if (a.length < c.length) {
Log.d("ControlFlow", "2: a는 c보다 길이가 작습니다.")
}
}
}
이 코드를 실행하면 다음의 결과가 나오는 것을 확인할 수 있다.
즉 이 결과를 통해 if문의 경우 2개의 if문이 모두 실행된것을 확인할 수 있고 if문 else if문의 경우 if문이 실행되면 else if문이 실행이 안되는 것을 확인할 수 있다.
1.3 그 밖의 if문 활용
if문의 조건식 결과를 변수에 대입할 수 있다. 예시는 다음과 같다.
package kr.co.kibeom.controlflow1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var goalOfSon = 3
var goalOfKim = 5
var winner = if (goalOfSon < goalOfKim) {
Log.d("SCORE_Result", "Kim이 Son보다 많은 골을 넣었습니다.")
goalOfKim
} else {
Log.d("SCORE_Result", "Son이 Kim보다 많은 골을 넣었습니다.")
goalOfSon
}
Log.d("SCORE_Result", "가장 많은 골을 넣은 사람이 넣은 goal은 ${winner} 입니다.")
}
}
이를 실행하면 다음의 Log를 확인할 수 있다. 즉 if문의 결과가 변수 winner에 대입이 되는것을 확인할 수 있다.
2.1 When 조건문
when 조건문은 다른 언어에서의 switch문과 비슷하다. 구조는 다음과 같다.
when (파라미터) {
비교값 -> {
// 변숫값이 비교 값과 같다면 이 영역이 실행됩니다.
}
}
이것을 예시로 보면 다음과 같다.
package kr.co.kibeom.controlflow1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var age = 25
when (age) {
23 -> {
Log.d("when", "나이가 23살 입니다.")
}
24 -> {
Log.d("when", "나이가 24살 입니다.")
}
25 -> {
Log.d("when", "나이가 25살 입니다.")
}
26 -> {
Log.d("when", "나이가 26살 입니다.")
}
}
}
}
실행 결과의 Log를 확인해보면 다음과 같다.
위의 예시에서 콤마를 통해 범위를 비교할 수 있다. 이를 예시로 확인하면 다음과 같다.
package kr.co.kibeom.controlflow1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var age = 25
when (age) {
23, 24 -> {
Log.d("when", "나이가 23살 또는 24살 입니다.")
}
25, 26 -> {
Log.d("when", "나이가 25살 또는 26살 입니다.")
}
26, 27 -> {
Log.d("when", "나이가 26살 또는 27살 입니다.")
}
}
}
}
역시 실행 후 Log를 확인하면 다음과 같다.
in을 통해 범위값을 비교할 수도 있다. 이는 다음과 같다.
package kr.co.kibeom.controlflow1
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var age = 25
when (age) {
in 10..19 -> {
Log.d("when", "당신의 나이는 10대 입니다.")
}
!in 10..19 -> {
Log.d("when", "당신의 나이는 10대가 아닙니다.")
}
}
}
}
실행한 후 Log를 확인해보면 다음과 같다.
'안드로이드 앱 개발' 카테고리의 다른 글
6. 함수 (0) | 2021.12.20 |
---|---|
5. 반복문 (0) | 2021.12.19 |
4. 배열과 컬렉션 (0) | 2021.12.14 |
2. 변수 (0) | 2021.12.12 |
1. 코틀린의 기본적인 문법 (0) | 2021.12.12 |