kotlin / 조건문, 반복문/ 문제만들어보자 1/5 /문제 : 두 숫자 중 큰 숫자를 찾아내기./ return 사용
문제 : 두 숫자 중 큰 숫자를 찾아내기.
- 첫 번째로 사용자에게 숫자를 입력받아 firstNumber에 저장합니다.
- 입력한 값이 숫자가 아닌 경우 "올바른 숫자를 입력해주세요."라는 메시지를 출력하고 프로그램을 종료합니다.
- 다음으로 두 번째 숫자를 입력받아 secondNumber에 저장합니다.
- 이 숫자 역시 숫자가 아닐 경우 "올바른 숫자를 입력해주세요."라는 메시지를 출력하고 프로그램을 종료합니다.
- 두 숫자를 비교하여 더 큰 숫자를 출력합니다. 만약 두 숫자가 같다면 "두 숫자는 같습니다."라는 메시지를 출력합니다.

답 :
fun main() {
println("첫 번째 숫자를 입력하세요:")
val firstNumber = readLine()?.toIntOrNull()
if (firstNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
println("두 번째 숫자를 입력하세요:")
val secondNumber = readLine()?.toIntOrNull()
if (secondNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
if (firstNumber > secondNumber) {
println("큰 숫자는 $firstNumber 입니다.")
} else if (secondNumber > firstNumber) {
println("큰 숫자는 $secondNumber 입니다.")
} else {
println("두 숫자는 같습니다.")
}
}
▼코드 뜯어보기 !
fun main() {
println("첫 번째 숫자를 입력하세요:")
}
먼저, 위의 문제 결과값을 보면 " 첫번째 숫자를 입력하세요 : " 라는 문구가 뜹니다.
그렇기에 우리도 , main안에 적어줍니다.
그럼 코드를 실행하면 먼저 "첫번째 숫자를 입력하세요" 라는 문구가 뜨게 됩니다.
다음은, 위의 말이 뜬 다음 사용자로 부터 숫자를 입력 받을 수 있어야겠죠 ?
val firstNumber = readLine()?.toIntOrNull()
그래서 이것의 이름을 firstNumber라 지은거고 ( 다른이름도 가능)
= readLine()?.toIntOrNull() //이것이 뭔지 궁금하실텐데 하나하나 살펴보도록 하겠습니다.
readLine()
: 사용자로부터 콘솔에서 입력받을 수 있는 거! (즉, 사용자가 키보드로 타이핑 할 수 있게 하는 겁니다)
?.
: 코틀린의 safe call연산자라고 부르는데,
이 연산자를 사용하면 객체(우리가 친값) 이 null 이 아닐때만 해당 메소드나 프로퍼티에 접근합니다.
+) 메소드 or 프로퍼티의 개념▼
메소드는 클래스 '안'에 있는 fun 어쩌구 저쩌구를 메소드라고 하고,
프로퍼티는 클래스 내에 있지만, 함수 밖에 있는 변수를 프로퍼티 라고 합니다!
아래 그림 참조하세용

toIntOrNull()
: 이건 String 클래스의 확장 함수로 문자열을 정수하고 변환하려고 시도합니다. 변환에 성공하면 해당 정수 값을 반환하고, 변환이 실패하면 null을 반환합니다.
> 즉 쉽게 말해서 우리가 쓴 값을 정수(1.2.3.4.5같은거) 로 변환하려고 하는데, 만약 정상적으로 숫자를 썼다면, 컴퓨터는 정수로 반환을 할거고, 만약 내가 "ㅇㄹㄹㅇㅁㄴㄹ"라고 쳤다면 이건 문자열이잖아?
그럼 정수로 바꿀수가 없잖아?
그럼 Null이 되는거지.
그래서 이거 모든걸 합치면
val firstNumber = readLine()?.toIntOrNull()
그래서 이렇게 쓰면

이런 과정으로 실행되게 되는것이지!!!!!!!!!
if (firstNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
그리고 다음줄을 보자.
여기선, if값이~ ()소괄호 안에 있는 경우, {}에 있는걸 실행한다 .
라는 의미인데,

돌아 가는 구조는 이러하다,
여기서 return의 의미에 대해 궁금할텐데 ,
이 내용은 자세히 정리하도록 하겠다.
▼return은 어떨때 반환되고 종료될까?
https://vjinjoov.tistory.com/36
println("두 번째 숫자를 입력하세요:")
val secondNumber = readLine()?.toIntOrNull()
if (secondNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
두번째 숫자를 입력하는 구문은 첫번째와 동일하므로 설명은 생략하도록 하겠다.
if (firstNumber > secondNumber) {
println("큰 숫자는 $firstNumber 입니다.")
} else if (secondNumber > firstNumber) {
println("큰 숫자는 $secondNumber 입니다.")
} else {
println("두 숫자는 같습니다.")
}
자 마지막 내용!
기본적으로 if 함수는

위 그림 처럼 실행되게 된다.
그래서 처음 if 값 ! firstNumber가 secondNumber보다 크다면 !! 큰숫자는 firstNumber라고 얘기하고
두번째는 secondNumber가 firstNumber보다 크다면 큰숫자는 secondNumber라고 얘기하고
이도 저도 아니면 분명 둘은 값이 같을 거기 때문에!
else에는 두 숫자는 같습니다! 라고 적어주었습니다!!