package com.example.mycalculator
class Calculator {
var num1 : Double =0.0
var num2 : Double =0.0
var operator : String = ""
fun addOperation(num1 : Double,num2 : Double) = num1 + num2
fun subtractOperation(num1: Double, num2: Double) = num1 - num2
fun multiplyOperation(num1: Double, num2: Double) = num1 * num2
fun divideOperation(num1: Double, num2: Double) = num1/num2
}
package com.example.mycalculator
fun main() {
println("첫번째 수를 입력하세요.")
var num1 : Double = readLine()!!.toDouble()
println("수행할 연산자를 고르세요 : + - * /")
var operator : String = readLine()!!
println("두번째 수를 입력하세요.")
var num2 : Double = readLine()!!.toDouble()
var calc : Double = 0.0
when(operator) {
"+" -> {
calc = Calculator().addOperation(num1,num2)
}
"-" -> {
calc = Calculator().subtractOperation(num1,num2)
}
"*" -> {
calc = Calculator().multiplyOperation(num1,num2)
}
"/" -> {
calc = Calculator().divideOperation(num1,num2)
}
}
println("${num1} ${operator} ${num2} = ${calc} 입니다.")
}
//class Calculator는 Lv1과 동일.
package com.example.mycalculator
fun main() {
var select : Int
var calc : Double = 0.0
var num1 : Double = 0.0
var operator : String = ""
var num2 : Double = 0.0
do {
println("")
println("원하는 계산을 선택하세요")
println("[1] 새로 계산하기 [2] 이어서 계산하기 [3] 그만두기 ")
select = readLine()!!.toInt()
if(select == 1) {
println("첫번째 수를 입력하세요.")
num1 = readLine()!!.toDouble()
println("수행할 연산자를 고르세요 : + - * /")
} else if (select == 2) {
num1 = calc
println("")
println("첫번째 수는 $calc 입니다.")
println("")
println("추가로 수행할 연산자를 고르세요 : + - * /")
} else if (select ==3) {
println("계산기를 종료합니다.")
break
}
operator = readLine()!!
println("두번째 수를 입력하세요.")
num2 = readLine()!!.toDouble()
when(operator) {
"+" -> {
calc = Calculator().addOperation(num1,num2)
}
"-" -> {
calc = Calculator().subtractOperation(num1,num2)
}
"*" -> {
calc = Calculator().multiplyOperation(num1,num2)
}
"/" -> {
if(num2 == 0.0) {
println("0으로 나눠지지 않습니다.")
} else {
calc = Calculator().divideOperation(num1, num2)
}
}
}
println("${num1} ${operator} ${num2} = ${calc} 입니다.")
} while (select != 3)
}
추가 연산을 위해 calc 값을 받아오는 것 자체에서 당혹감을 느꼈다. 반복문을 사용하면 되는 건 알겠는데 막상 반복문을 적용하려고 하니까 어느 부분을 어디까지 반복해야할지 상당히 난감했다.
=> 반복문 배운거라곤 for, while, do..while 밖에 없어서 다행이라고 해야할지.. 사실 for랑 while만 생각하고는 적용방법이 마땅치 않아 당황했는데, do..while문을 떠올리고는 금방 작성했다. 바보같이 if(select == 1)안에 when까지 전부다 집어넣어서 else if(select ==2) 에도 또 when을 쓸 뻔 했지만, 정신차리고 중복코드는 잘 if문 밖으로 빼서 작동하도록 했다.
while에 (select !=3)만 써놓고 else if(select == 3)을 안해줬었다. 솔직히.. 필요없을 줄 알았다. 그런데 끝도 없이 run 동작하고 exit를 안하는 문제가 발생했다.
=>그래서 else if(select == 3)를 만들고 break로 반복문을 빠져나오게 해서 실행종료하도록 만들었다.
팀원들과 마무리시간에 이야기 나누는 시간이 있었는데..! 현업에서는 do while을 사용하지 않는다고 한다..ㅎㅎ while이랑 똑같기 때문에 바꾸는데 어렵지 않으실거라고 하셔서 lv3에는 그냥 while문으로 구현할 수 있도록 해봐야겠다.
=>그냥.. while을 위로 올리고 do를 빼면 되는 아주 간단한 일이었다.
lv3코드를 올릴 때 같이 올리도록 하겠다.