Swift 계산기 만들기 v0.1

Swift로 계산기 만들기, 1차 시도(작업 시간: 약 3시간)

코드 구성도

코드 작성

class ViewController: UIViewController {
    
    @IBOutlet var displayLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        displayLabel.text = "0"
    }

    var displayText: String = "0"
    var numbers: [Int] = []
    var signs: Int = 1
    var tmp: Int = 0
    

    // 입력 받은 숫자를 displayText에 저장하며 라벨에 출력
    @IBAction func btnNumberClick(btn: UIButton) {
        
        if displayLabel.text == "0" {
            displayText = (btn.titleLabel?.text)!
        }else {
           displayText += (btn.titleLabel!.text)!
        }
        
        displayLabel.text = displayText
    }


    // 연산시 중복 사용되는 부분 calculate 함수로 따로 분리
    func calculate() {
        numbers.append(Int(displayText)!)
        if signs == 1 {
            tmp += numbers.last!
        }else if signs == 2 {
            tmp -= numbers.last!
        }else if signs == 3 {
            tmp *= numbers.last!
        }else if signs == 4 {
            tmp /= numbers.last!
        }
        displayLabel.text = String(tmp)
    }
    
    
    // 연산 기호 클릭시 조건문 분기
    @IBAction func operation(sign: UIButton) {
        
        // displayText 문자열이 비어있다는 것은 연산기호가 중복으로 눌린 상태이므로 건너뜀
        if displayText == "" {

        }else {
            
            // + 연산기호를 눌렀을 경우
            if sign.titleLabel!.text == "+" {
                
                // numbers 배열이 비어있다는 것은 첫번째 연산이라는 뜻
                if numbers.isEmpty {
                    numbers.append(Int(displayText)!)
                    tmp = numbers.last!
                    signs = 1
                // numbers 배열이 비어있지 않다는 것은 연산중이라는 뜻
                }else {
                    calculate()
                }
                
                // 연산 종료 후 signs 값 재할당
                // 연산 종료 후 displayText 초기화
                signs = 1
                displayText = ""
                
            }else if sign.titleLabel!.text == "-" {
                
                if numbers.isEmpty {
                    numbers.append(Int(displayText)!)
                    tmp = numbers.last!
                    signs = 2
                }else {
                    calculate()
                }
                
                displayLabel.text = String(tmp)
                signs = 2
                displayText = ""
                
            }else if sign.titleLabel!.text == "x" {
                
                if numbers.isEmpty {
                    numbers.append(Int(displayText)!)
                    tmp = numbers.last!
                    signs = 3
                }else {
                    calculate()
                }
                
                displayLabel.text = String(tmp)
                signs = 3
                displayText = ""
                
            }else if sign.titleLabel!.text == "÷" {
                
                if numbers.isEmpty {
                    numbers.append(Int(displayText)!)
                    tmp = numbers.last!
                    signs = 4
                }else {
                    calculate()
                }
                
                displayLabel.text = String(tmp)
                signs = 4
                displayText = ""
                
            }else if sign.titleLabel!.text == "=" {
                
                calculate()
                displayLabel.text = String(tmp)
                numbers = []
                tmp = 0
                displayText = ""
            }
            
        }
        
    }
    
    
    @IBAction func btnResetClick(btn: UIButton) {
        displayText = "0"
        displayLabel.text = displayText
    }
    
}