[Swift-UIKit]계산기 만들기 코드

sai06266·2023년 8월 23일

Swift

목록 보기
3/10

8/23 기준 코드

import UIKit

class ViewController: UIViewController {

    @IBOutlet var ACbutton: UIButton!
    @IBOutlet var lblResult: UILabel!
    
    var currentNum:Double = 0.0
    var currentOperator = ""
    var firstOperand:Double = 0.0
    var result:Double = 0.0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    @IBAction func getNum(_ sender: UIButton) {
        let digit = sender.tag
        currentNum = currentNum * 10 + Double(digit)
        updateDisplay()
        if currentNum != 0{
            ACbutton.setTitle("C", for: .normal)
        }
    }
    @IBAction func getOperator(_ sender: UIButton) {
        if currentOperator == ""{
            if firstOperand == 0{
                firstOperand = currentNum
            }else {
                doCalculate()
            }
            currentNum = 0
            let tmp = sender.tag
            switch tmp{
            case 1:
                currentOperator = "÷"
            case 2:
                currentOperator = "X"
            case 3:
                currentOperator = "-"
            case 4:
                currentOperator = "+"
            default:
                break
            }
        }else{
        }
    }
    //계산기능
    func doCalculate(){
        switch currentOperator{
        case "+":
            result = firstOperand + currentNum
        case "-":
            result = firstOperand - currentNum
        case "X":
            result = firstOperand * currentNum
        case "÷":
            if currentNum != 0 {
                result = firstOperand / currentNum
            } else {
                lblResult.text = "Error"
                return
            }
        default:
            break
        }
        currentNum = result
        updateDisplay()
        firstOperand = result
        currentOperator = ""
    }
    // 화면 표시 업데이트, 소숫점이 있을 때만 소숫점 표시
    func updateDisplay() {
        if currentNum.truncatingRemainder(dividingBy: 1) == 0{
            let formattedValue = String(format: "%.0f", currentNum)
            lblResult.text = formattedValue
        }else{
            lblResult.text = "\(currentNum)"
        }
    }
    // = 버튼을 클릭했을 때
    @IBAction func showResult(_ sender: UIButton) {
        doCalculate() //계산 결과를 보여줌
    }
    // C 버튼을 클릭했을 때 초기화
    @IBAction func clearButtonTapped(_ sender: UIButton) {
        currentNum = 0
        firstOperand = 0
        currentOperator = ""
        updateDisplay()
        ACbutton.setTitle("AC", for: .normal)
    }
    //+/- 버튼 클릭했을 때
    @IBAction func changeSign(_ sender: UIButton) {
        currentNum *= -1
        updateDisplay()
    }
    // % 버튼을 클릭했을 때
    @IBAction func btnPercent(_ sender: UIButton) {
        currentNum /= 100
        updateDisplay()
    }
    // #TODO . 버튼을 클릭했을 때
    @IBAction func btnDot(_ sender: UIButton) {
        if currentNum.truncatingRemainder(dividingBy: 1) != 0 {
             return
        }else{
        }
         updateDisplay()
    }
    
}

0개의 댓글