Android 앱개발 공부/TIL(Today I Learned)

[Android] TIL 19일차

bunny code 2024. 6. 17. 20:25

조건문 & 반복문 문제 풀기


 

1. 짝수와 홀수 판별

fun main(){
    var number1 = readLine()!!.toInt()

    if(number1%2==0)
        println("짝수입니다.")
    else
        println("홀수입니다.")
}

-> 2로 나눴을 때 짝수는 나머지가 0, 홀수는 나머지가 1로 떨어지니 number1%2==0을 if 조건에 작성

 

 

2. 최댓값과 최솟값 찾기

fun main(){

    var number1 = readLine()!!.toInt()
    var number2 = readLine()!!.toInt()
    var number3 = readLine()!!.toInt()
    var max = if(number1>=number2 && number1>=number3)  number1 else if (number2>=number1 && number2>=number3) number2 else number3
    var min = if(number1<=number2 && number1<=number3)  number1 else if (number2<=number1 && number2<=number3) number2 else number3

    return print("최댓값 : ${max}, 최솟값 : ${min}")
}

-> readLine과 toInt를 사용하여 문자열로 입력받은 숫자를 Int형으로 전환하도록 설정

-> 조건문 if와 and연산자(&&)를 이용하여 max 변수는 세 개의 숫자 중 최댓값을 min 변수는 최솟값을 받도록 작성

 

3. 성적 등급 매기기

fun main(){
    var number = readLine()!!.toInt()

    if(number>=90)
        println("A")
    else if(number>=80)
        println("B")
    else if(number>=70)
        println("C")
    else if(number>=60)
        println("D")
    else
        println("F")
    }

-> if와 else if를 이용하여 조건문 작성

 

* 수정해야 할 점

조건이 많으므로 if, else if 대신 when 문으로 작성하여 코드 가독성을 높여야 함

 

* 수정한 코드

fun main(){
    var number = readLine()!!.toInt()

    var grade = when {
        number >= 90 -> "A"
        number >= 80 -> "B"
        number >= 70 -> "C"
        number >= 60 -> "D"
        else -> "F"
    }

    println("등급 : ${grade}")
    }

-> when에서 특정 변수에 ~이상 ~이하 조건을 넣어야 한다면 when 옆에 소괄호를 생략하고 중괄호 안에 해당 조건을 직접 작성

 

 

4. 구구단 출력

fun main(){
    var a = readLine()!!.toInt()
    var answer = 0

        for (i in 1..9) {
            answer = a * i
            println("${answer}")
        }

}

-> for 문을 이용하여 i의 값이 1 이상 9 이하일 경우 a와 i를 곱하는 것을 반복하도록 작성

 

* 수정해야 할 점

answer 변수 선언 없이 a와 i만을 이용하여 print문 작성, 코드 간결화

 

* 수정한 코드

fun main(){
    var a = readLine()!!.toInt()
    
        for (i in 1..9) {
            println("$a * $i = ${a*i}")
        }
}

-> 달러와 중괄호 안에 연산 기능 작성해도 연산 적용 되는 걸 확인

 

* 추가 문제 (1단부터 9단까지 구구단 결과 출력)

fun main(){
        for (i in 1..9) {
            for (j in i..9)
            println("$i * $j = ${i*j}")
        }
}

-> 수정한 코드에서 변수 a에 대한 내용을 지우고 중첩 for문을 추가하면 구구단 결과를 전부 출력할 수 있음

 

 

5. 특정 범위 내의 합 계산(1부터 100)

fun main(){
    var answer = 0
        for (i in 1..100) {
            answer += i
        }
    println("1부터 100까지의 합 : ${answer}")
}

-> i가 1이상 100이하 일 경우 answer에 i의 값을 계속 더하도록 반복문 작성

-> println문을 반복문 외부에 작성하여 100까지 더한 결괏값만 확인하도록 작성

 

6. 리스트의 요소 합 구하기

fun main(){
    var lists = listOf(0,1,2,3,4,5,6,7)
    var answer = 0
        for (list in lists) {
            answer += list
        }
    println("리스트 요소의 합은? : ${answer}")
}

-> 리스트는 listOf를 이용하여 작성, 변수 lists로 선언

-> for문을 이용하여 리스트(lists) 안에 있는 요소를 하나씩 빼서(list) answer에 더함

-> println문을 반복문 외부에 작성하여 리스트 요소의 합을 출력함

 

 

7. 간단한 계산기 프로그램 만들기

fun main(){
    print("첫번째 숫자를 입력하세요 : ")
    var number1 = readLine()!!.toInt()

    print("두번째 숫자를 입력하세요 : ")
    var number2 = readLine()!!.toInt()

    print("연산자를 입력하세요 : ")
    var input = readLine()!!

    when(input){
        "+" -> println("${number1}과 ${number2}의 합은 : ${number1+number2}")
        "-" -> println("${number1}과 ${number2}의 차는 : ${number1-number2}")
        "*" -> println("${number1}과 ${number2}의 곱은 : ${number1*number2}")
        "/" -> println("${number1}과 ${number2}의 몫은 : ${number1/number2}")
        else -> println("연산자 입력이 잘못되었습니다.")
    }
}

-> 입력해야 할 숫자와 연산자는 readLine과 toInt를 이용하여 변수 선언

-> when 조건문을 이용하여 +,-,*,/ 연산자를 입력받으면 각각 합, 차, 곱, 몫이 나오도록 작성

-> 만약 사칙연산 문자가 아닌 다른 문자를 입력 받았다면 else문을 통해 "연산자 입력이 잘못되었습니다."가 출력되도록 작성

 

* 수정해야 할 점

println문을 이용하여 코드가 너무 길어짐, 가독성을 위해 수정 필요

 

* 수정한 코드

fun main(){
    print("첫번째 숫자를 입력하세요 : ")
    var number1 = readLine()!!.toInt()

    print("두번째 숫자를 입력하세요 : ")
    var number2 = readLine()!!.toInt()

    print("연산자를 입력하세요 : ")
    var input = readLine()!!

    var result = when(input){
        "+" -> number1 + number2
        "-" -> number1 - number2
        "*" -> number1 * number2
        "/" -> number1 / number2
        else -> {
            println("연산자 입력이 잘못되었습니다.")
            return
        }
    }
    println("${result}")
}

 

-> result 변수를 추가로 작성하여 해당 변수에 when 조건문 내용이 입력되도록 선언

-> pritln 문을 이용하여 결괏값 출력

 

 

 

 

추가 복습 내용


 

1~5주차 강의 들으면서 이해하기 어려웠던 내용, 중요한 내용들을 다시 복습하였다.

 

- 조건문, 반복문

https://velog.io/@woosim34/코틀린kotlin에서-조건문-반복문-연산자

 

코틀린(kotlin)에서 조건문, 반복문, 연산자

다른 언어에서도 기초 문법인 조건문, 반복문, 연산자를 코틀린에서 한번 알아보겠습니다!

velog.io

: 반복문 for문에서 사용하는 조건에 대해 더 자세하게 알 수 있음(step, downTo)

 

 

- 인터페이스

https://devfunny.tistory.com/753

 

[Kotlin in Action] 13. 코틀린 인터페이스 구현

코틀린 인터페이스 코틀린 인터페이스는 자바8 인터페이스와 비슷하다. 코틀린 인터페이스 안에는 추상 메서드뿐 아니라 구현이 있는 메서드도 정의할 수 있다. 다만 인터페이스에는 아무런 상

devfunny.tistory.com

: 인터페이스와 클래스 둘 다 같은 이름의 메소드가 존재할 경우 상속받는 하위 클래스에서 어떻게 작성해야 하는지 알 수 있음

: super 키워드를 이용하거나 오버라이딩을 통해 해당 메소드를 재설계하면 오류를 없앨 수 있다.

 

 

- 업 캐스팅과 다운 캐스팅

https://medium.com/@ans188/java-kotlin-%EC%97%85%EC%BA%90%EC%8A%A4%ED%8C%85%EA%B3%BC-%EB%8B%A4%EC%9A%B4%EC%BA%90%EC%8A%A4%ED%8C%85-c26b08a654ff

 

[Java, Kotlin] 업캐스팅과 다운캐스팅

업캐스팅과 다운캐스팅에 대해 알아보자

medium.com

: 업 캐스팅과 다운 캐스팅에 대한 정의와 예시를 굉장히 이해하기 쉽게 설명해준 글

'Android 앱개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글

[Android] TIL 21일차  (0) 2024.06.19
[Android] TIL 20일차  (0) 2024.06.18
[Android] TIL 18일차  (0) 2024.06.14
[Android] TIL 17일차  (2) 2024.06.13
[Android] TIL 16일차  (2) 2024.06.12