
Calculator 클래스 만들기
더하기, 빼기, 나누기, 곱하기 기능을 가진 클래스를 작성합니다.
클래스를 이용한 연산
이 클래스를 이용하여 몇 가지 연산을 수행하고 결과를 출력합니다.
✍🏻 클래스 첫 시도
//에러 코드입니다!!!
class Calculator
{
//AddOperation(더하기), SubstractOperation(빼기),
//MultiplyOperation(곱하기), DivideOperation(나누기)
fun AddOperation (num1 : Double, num2 : Double) : Double = num1 + num2
fun SubstractOperation (num1 : Double, num2 : Double) : Double = num1 - num2
fun MultiplyOperation (num1 : Double, num2 : Double) : Double = num1 * num2
fun DivideOperationn (num1 : Double, num2 : Double) : Double = num1 / num2
}
대략적인 틀은 알겠지만 세부적인 문법은 안 보면 짤 수 없다..
위 코드의 문제점 : 변수 num1과 num2를 지정하지 않았고, 초기화 하지도 않았다. 연산 변수도 만들지 않았다.
✍🏻 클래스 수정
class Calculator
{
var num1 :Double = 0.0
var num2 : Double = 0.0
var operator : String = ""
//AddOperation(더하기), SubstractOperation(빼기),
//MultiplyOperation(곱하기), DivideOperation(나누기)
fun AddOperation (num1 : Double, num2 : Double) : Double = num1 + num2
fun SubstractOperation (num1 : Double, num2 : Double) : Double = num1 - num2
fun MultiplyOperation (num1 : Double, num2 : Double) : Double = num1 * num2
fun DivideOperationn (num1 : Double, num2 : Double) : Double = num1 / num2
}
🤦🏻♀️ main 첫 시도
//에러 코드입니다!!!!
fun main()
{
//콘솔에 입력해야하니까 .readLine()를 사용했다
println("첫번 째 숫자를 입력해 주세요.")
var num1.readLine()!!.toDouble
println("원하는 연산자를 입력해 주세요.")
var operator.readLine()!!.toString
println("두번 째 숫자를 입력해 주세요.")
var num2.readLine()!!.toDouble
}
readLine() 앞에 .이 아닌 =로 사용하거나, main함수 안에서 Class Calulator를 사용하려면 클래스의 객체를 생성해야 한다.
나는 이 두가지 방법으로 다 풀어볼 예정이다.
✍🏻 1. main 수정(readLine() 수정)
fun main()
{
println("첫번 째 숫자를 입력해 주세요.")
var num1 :Double = readLine()!!.toDouble()
println("원하는 연산자를 입력해 주세요.")
var operator :String = readLine()!!.toString()
println("두번 째 숫자를 입력해 주세요.")
var num2 :Double = readLine()!!.toDouble()
var result :Double = 0.0
when(operator)
{
"+" -> {result = Calculator().AddOperation(num1, num2)}
"-" -> {result = Calculator().SubstractOperation(num1, num2)}
"*" -> {result = Calculator().MultiplyOperation(num1, num2)}
"/" -> {result = Calculator().DivideOperationn(num1, num2)}
else -> {"잘못된 연산자입니다."
Double.NaN}
}
println("결과 : ${result}")
}
2. ✍🏻 main 수정 (클래스의 객체 생성)
fun main()
{
//클래스의 객체를 생성
val calculator = Calculator()
println("첫번 째 숫자를 입력해 주세요.")
calculator.num1 = readLine()!!.toDouble()
println("원하는 연산자를 입력해 주세요.")
calculator.operator = readLine()!!.toString()
println("두번 째 숫자를 입력해 주세요.")
calculator.num2 = readLine()!!.toDouble()
val result = when(calculator.operator)
{
"+" -> calculator.AddOperation(calculator.num1, calculator.num2)
"-" -> calculator.SubstractOperation(calculator.num1, calculator.num2)
"/" -> calculator.MultiplyOperation(calculator.num1, calculator.num2)
"*" -> calculator.DivideOperationn(calculator.num1, calculator.num2)
else -> "잘못된 연산자입니다."
}
println("결과 = ${result}")
}
✍🏻 출력 문제 없음
첫번 째 숫자를 입력해 주세요.
10
원하는 연산자를 입력해 주세요.
+
두번 째 숫자를 입력해 주세요.
10
결과 = 20.0
나의 이번달 목표 : 문법 참고하지 않고 내 머리로 코드 짜는 것!!!