[Kotlin 문법 기초] 과제 - 계산기 Lv2.

0
post-thumbnail

🍥구현 기능

  • Lv1에서 만든 Calculator 클래스에 출력 이후 추가 연산을 가능하도록 코드를 추가하기
  • 클래스를 이용하여 연산 진행 후 출력하기

🍥구현하기

Calculator 클래스

class Calculator {
    var a:Double = 0.0
    var op:Char = ' '
    var b:Double = 0.0

    init{
        println("계산기가 생성되었습니다.")
    }

    //사칙연산 함수
    fun add():Double{
        val output = a + b
        println("= ${output}")
        return output
    }
    fun sub():Double{
        val output = a - b
        println("= ${output}")
        return output
    }
    fun div():Double{
        val output = a / b
        println("= ${output}")
        return output
    }
   fun mul():Double{
       val output = a * b
       println("= ${output}")
       return output
   }

    //연산자 종류에 따라 사칙연산 함수 호출
    //연속적인 추가 연산을 위헤 a에 연산 결과 저장
    fun calculate(){
        when(op){
            ' ' -> println("error! 연산자가 입력되지 않았습니다.")
            '+' -> a = add()
            '-' -> a = sub()
            '/' -> if(b == 0.0) println("error! 0으로 나눌 수 없습니다.") else a = div()
            '*' -> a = mul()
            else -> println("error! 유효한 연산자가 아닙니다.")
        }
    }

    //첫 연산식을 입력받은 경우: input 문자열을 a,연산자,b로 나누기
    fun calculateNewInput(input:String){
        if(input == ""){
            println("error! 연산식이 입력되지 않았습니다.")
            return
        }
        for(i in 0 until input.length){
            if(input[i] == '+'|| input[i] == '-'|| input[i] == '/'|| input[i] == '*'){
                a = input.substring(0, i).toDouble()
                op = input[i]
                b = input.substring(i+1).toDouble()
                break;
            }
        }
        calculate()
    }
    
    //추가 연산을 입력받은 경우: input 문자열을 연산자,b로 나누기
    fun calculateNextInput(input:String){
        if(input == ""){
            println("error! 연산식이 입력되지 않았습니다.")
            return
        }
        for(i in 0 until input.length){
            if(input[i] == '+'|| input[i] == '-'|| input[i] == '/'|| input[i] == '*'){
                op = input[i]
                b = input.substring(i+1).toDouble()
                break;
            }
        }
        calculate()
    }
}

My_Calculator.kt

fun main() {
    val calculator1 = Calculator()

    var input:String = ""
    while(input != "q"){
        println("계산할 수식을 입력하세요. (계산기 종료: q)")
        input = readLine() ?: ""
        //input 확인
        if(input == ""){
            println("error! 연산식이 입력되지 않았습니다.")
            continue
        }
        
        //첫 연산식을 입력받은 경우:
        calculator1.calculateNewInput(input)

        while(input != "c" && input != "q"){
            println("추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)")
            input = readLine() ?: ""
            //input 확인
            if(input == ""){
                println("error! 연산식이 입력되지 않았습니다.")
                continue
            }
            if(input == "c" || input == "q") break

            //추가 연산을 입력받은 경우:
            calculator1.calculateNextInput(input)
        }
    }
    println("계산기가 종료되었습니다.")
}

🍥구현 결과

계계산기가 생성되었습니다.
계산할 수식을 입력하세요. (계산기 종료: q)

error! 연산식이 입력되지 않았습니다.
계산할 수식을 입력하세요. (계산기 종료: q)
1 + 2
= 3.0
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
+ 2
= 5.0
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
/ 0
error! 0으로 나눌 수 없습니다.
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
* 6
= 30.0
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
c
계산할 수식을 입력하세요. (계산기 종료: q)
5 / 2
= 2.5
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
- 5
= -2.5
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)

error! 연산식이 입력되지 않았습니다.
추가 연산을 입력하세요. (연산 종료: c,계산기 종료: q)
q
계산기가 종료되었습니다.
profile
Be able to be vulnerable, in search of truth

0개의 댓글