계산기 만들기

두주·2023년 12월 5일
0

TIL

목록 보기
10/58

하루 종일 열심히 만들어 보긴 했는데. 잘 한건지 모르겠다.

class Calculator {
val addOperation = AddOperation()
val subtractOperation = SubtractOperation()
val multiplyOperation = MultiplyOperation()
val divideOperation = DivideOperation()

fun calculate(num1: Int, num2: Int, operation: Int) {
    when (operation) {
        1 -> {
            val result = addOperation.operate(num1, num2)
            println("더하기를 선택하셨습니다.")
            println("결과: $result")
        }

        2 -> {
            val result = subtractOperation.operate(num1, num2)
            println("빼기를 선택하셨습니다.")
            println("결과: $result")
        }

        3 -> {
            val result = multiplyOperation.operate(num1, num2)
            println("곱하기를 선택하셨습니다.")
            println("결과: $result")
        }

        4 -> {
            val result = divideOperation.operate(num1, num2)
            println("나누기를 선택하셨습니다.")
            println("결과: $result")
        }

        else -> println("올바른 연산자를 선택해 주세요.")
    }
}

fun main() {
println("숫자 1을 입력해 주세요.")
val num1 = readLine()!!.toInt()

println("숫자 2를 입력해 주세요.")
val num2 = readLine()!!.toInt()

println("$num1, $num2 를 입력하셨습니다. 맞습니까?")
println("맞으면 1, 틀리면 2를 입력해 주세요.")
val continueCheck = readLine()!!.toInt()

while (continueCheck == 1) {
    println("연산자를 선택하세요.")
    println("1. 더하기")
    println("2. 빼기")
    println("3. 곱하기")
    println("4. 나누기")
    println("0. 나가기")

    val calcnum = readLine()!!.toInt()

    if (calcnum == 0) {
        println("계산을 종료합니다.")
        break
    }

    val calculator = Calculator()
    calculator.calculate(num1, num2, calcnum)
}

println("숫자를 다시 입력하시려면 1을 입력해 주세요.")
println("계산기 종료를 원하실 경우 0을 입력해 주세요.")

val wantExit = readLine()!!.toInt()

when (wantExit) {
    1 -> main()
    0 -> {
        println("계산기를 종료합니다.")
        exitProcess(0)
    }
    else -> {
        println("잘못 입력하셨습니다.")
        println("처음으로 돌아갑니다.")
        main()
    }
}

계산기 프로그램인 만큼 숫자만 딸랑 내주는게 아니라,
내가 원하는 연산자를 선택하고 숫자를 잘못 입력했을 때에는 다시 돌아가거나
프로그램을 처음부터 시작하는 기능까지 있었으면 좋겠다 싶었다.

어찌저찌 되긴 하는데 사실 왜 됐는지도 잘 모르겠다.

박치기 하다보면 좀 잘 할 수 있을 줄 알았는데 ㅠ.ㅠ

더 해봐야지

profile
야옹.

0개의 댓글