조건문 & 반복문 문제 풀기
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에서-조건문-반복문-연산자
: 반복문 for문에서 사용하는 조건에 대해 더 자세하게 알 수 있음(step, downTo)
- 인터페이스
https://devfunny.tistory.com/753
: 인터페이스와 클래스 둘 다 같은 이름의 메소드가 존재할 경우 상속받는 하위 클래스에서 어떻게 작성해야 하는지 알 수 있음
: super 키워드를 이용하거나 오버라이딩을 통해 해당 메소드를 재설계하면 오류를 없앨 수 있다.
- 업 캐스팅과 다운 캐스팅
: 업 캐스팅과 다운 캐스팅에 대한 정의와 예시를 굉장히 이해하기 쉽게 설명해준 글
'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 |