본문 바로가기

카테고리 없음

23.12.06 계산기

오늘은 코틀린으로 간이 계산기를 만드는 작업을 해보았다. 다행히 버튼을 만들고 진짜 앱처럼 만드는게 아니라 말그대로 간이인, 숫자를 입력하면 계산이 되는걸 만드는 것이였는데, 너무 막막해서 최후의 수단으로 보라는 힌트를 봤지만, 그래도 힌트가 답은 아닌지라 해맬수밖에 없었다. 그래도 if, else같은 조건문을 사용해야 한다는건 알아냈고, 검색 끝에 알아낸 바에 따르면,

fun main() {
    println("숫자와 연산기호, 숫자를 순서대로 입력하세요.")
    Calculator().Operation()

}

먼저, 출력할 메시지를 main 안에 써놓고 각자 class와 조건문에 사용할 이름도 집어 넣는다.

 

그리고 클래스의 이름은 main안에도 집어 넣었던 Calculator로 해서

class Calculator()

이렇게 만들어두고 {}의 안에는 밑에 숫자, 연산기호, 숫자를 입력할수 있도록

var num1 = readLine()!!.toInt()
var operator = readLine()!!.toString()
var num2 = readLine()!!.toInt()

를 집어 넣는다. 그러면 숫자를 누르고 엔터, 기호 엔터, 숫자를 입력할수 있게된다.

그리고 그 밑엔 

 fun Operation() {
        val result = when (operator) {
            "+" -> num1 + num2
            "-" -> num1 - num2
            "*" -> num1 * num2
            "/" -> num1 / num2


            else -> {
                println("잘못된 연산자입니다.")
                return
            }
        }
        println(result)
    }

}

이렇게 해서 앞에 main에 넣은 Operation을 함수명으로 해서 조건문인 when을 사용해 중간에 

var operator = readLine()!!.toString() 과 when을 val result = when (operator)로 연결 시키고, +,-,/,*를 누르면 해당하는 값이 출력 되도록 한다.

 

그렇게 하면, 최종적으로 이런 형상이 된다.

fun main() {
    println("숫자와 연산기호, 숫자를 순서대로 입력하세요.")
    Calculator().Operation()
}

class Calculator() {

    var num1 = readLine()!!.toInt()
    var operator = readLine()!!.toString()
    var num2 = readLine()!!.toInt()

    fun Operation() {
        val result = when (operator) {
            "+" -> num1 + num2
            "-" -> num1 - num2
            "*" -> num1 * num2
            "/" -> num1 / num2


            else -> {
                println("잘못된 연산자입니다.")
                return
            }
        }
        println(result)
    }

}

그럼, 이제는 class와 계산기를 연결하도록 한다.

 

새로만들기로 클래스를 만든 뒤,

class AddOperation{
    fun operate(num1: Int, num2: Int): Double = (num1 + num2).toDouble()
}

이런식으로 덧셈은 AddOperation, 뺄셈은 SubtractOperation, 곱셈은 MultiplyOperation, 나누기는 DivideOperation로 각각 클래스를 만든다.

 

그리고 만든 클래스들을 연결 해야 하는데, 

val addOperation = AddOperation()
val result = addOperation.operate(num1, num2)

val subtractOperation = SubtractOperation()
val resultt = subtractOperation.operate(num1, num2)

val multiplyOperation = MultiplyOperation()
val resulttt = multiplyOperation.operate(num1, num2)

val divideOperation = DivideOperation()
val resultttt = divideOperation.operate(num1, num2)

이렇게 하면 서로 연결이 된다! 그리고 밑에

 

fun Operation() {
    val result = when (operator) {
        "+" -> { println("$num1 + $num2 결과는 : $result")
            num1 + num2
        }

        "-" ->  { println("$num1 - $num2 결과는 : $resultt")
            num1 - num2
        }

        "*" -> { println("$num1 * $num2 결과는 : $resulttt")
            num1 * num2
        }
        "/" -> { println("$num1 / $num2 결과는 : $resultttt")
            num1 / num2
        }
        "%" -> num1 % num2
        else -> {
            println("잘못 입력 하셨습니다.")
            return
        }
    }
    println(result)
}

 

이러면 연결도 되고 숫자, 기호, 숫자를 입력시 메시지도 함께 나타난다.