0101011001010111

kotlin / 조건문, 반복문/ 문제만들어보자 1/5 /문제 : 두 숫자 중 큰 숫자를 찾아내기./ return 사용 본문

Kotlin/★정예★반 숙제

kotlin / 조건문, 반복문/ 문제만들어보자 1/5 /문제 : 두 숫자 중 큰 숫자를 찾아내기./ return 사용

[진주] 2023. 8. 9. 19:05
728x90
반응형

문제 : 두 숫자 중 큰 숫자를 찾아내기.

  1. 첫 번째로 사용자에게 숫자를 입력받아 firstNumber에 저장합니다.
  2. 입력한 값이 숫자가 아닌 경우 "올바른 숫자를 입력해주세요."라는 메시지를 출력하고 프로그램을 종료합니다.
  3. 다음으로 두 번째 숫자를 입력받아 secondNumber에 저장합니다.
  4. 이 숫자 역시 숫자가 아닐 경우 "올바른 숫자를 입력해주세요."라는 메시지를 출력하고 프로그램을 종료합니다.
  5. 두 숫자를 비교하여 더 큰 숫자를 출력합니다. 만약 두 숫자가 같다면 "두 숫자는 같습니다."라는 메시지를 출력합니다.

결과값이 이런식으로 나오게 해보세요.

 


답 : 

 

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에는 두 숫자는 같습니다! 라고 적어주었습니다!!

 

 

728x90
반응형