또 뜯어고쳤다.
num1과, num2, operator 입력값을 사용자로부터 받아온다.
result라는 상수를 통해 Calculator클래스의 operate함수에 num1, num2, operator를 보내준다.
//calculator.kt
class Calculator {
fun operate(num1: Int, num2: Int, operator: Int): Double {
val operation = when (operator) {
1 -> AddOperation()
2 -> SubstractOperation()
3 -> MultiplyOperation()
4 -> DivideOperation()
else -> println("허용되지 않는 문자입니다.")
}return operation.operate(num1, num2) }
}
이렇게 하면 실행이 안된다.
when을 사용할 때 1~4가 아닌 다른 값을 받았을 때 출력하는 예외 처리가 필요한데
else절이 println을 호출한다.
만약 사용자가 1(더하기)를 입력했다면 실제 처리되는 return 값은 아래와 같다.
return AddOperation().operate(num1, num2)
AddOperation 클래스에 num1과 num2를 보내는 역할을 하고있는데
println(blahblah).operate(num1,num2)가 될 수가 없는 것
어떻게 예외 처리를 할 수 있을까.
else -> throw IllegalArgumentException("예외처리")
아직 뭔 뜻인진 모르겠지만 이렇게 예외처리가 된다고 한다.
되네.
해결했다는 성취감도 있지만
사실 내가 제대로 이해하고 된 건지는 모르겠다.
예제를 보면서 하다보니 된 것 같은 느낌이 너무 크다.
형식 상관없이 계산기를 만들어 봐야지.