[과제]계산기 lv1

Anna·2024년 6월 8일
0

[TIL]Android

목록 보기
4/34
post-thumbnail

lv1 기본 계산기 클래스 만들기

Calculator 클래스 만들기
더하기, 빼기, 나누기, 곱하기 기능을 가진 클래스를 작성합니다.
클래스를 이용한 연산
이 클래스를 이용하여 몇 가지 연산을 수행하고 결과를 출력합니다.


class

✍🏻 클래스 첫 시도

//에러 코드입니다!!!
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

🤦🏻‍♀️ 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

나의 이번달 목표 : 문법 참고하지 않고 내 머리로 코드 짜는 것!!!

0개의 댓글