Problem with dividing and multiplying by zero in Calculator app

Viewed 155

Problem: I'm trying to do simple Int Calculator in Swift for MacOS. It's working great, except two things. I want to display "ALARM" in label when I divided by zero. Also, if the first input number is "0", so after pressing multiply button(for example 0*5), it output "5" in label instead "0". I looked for the solve, I tried all possible variant, but it doesn't work as I want.

@IBAction func pressEqual(_ sender: NSButton) {
    
    guard let number: Int = Int(labelString)
    else { return }
    
    if currentMode == Operation.noOp || lastMode {
        return
    }
    
    if currentMode == Operation.add {
        savedNumber = savedNumber + number
    } else if currentMode == Operation.subtract {
        savedNumber -= number
    } else if currentMode == Operation.multiply {
        savedNumber *= number
    } else if currentMode == Operation.divide {
        if number == 0 {
            labelString = "Banned"
            currentMode = Operation.noOp
            self.updateDisplay()
        } else {
            savedNumber /= number
        }
    }
    currentMode = Operation.noOp
    labelString = "\(savedNumber)"
    lastMode = false
    
    self.updateDisplay()
}

It's a part of my code, I think the problem is here. For every button I used functions. I sighted if labelString value is, for example, "333", then after dividing dy zero it write 333 (5 / 0 = 333). But it doesn't work with words. What to do with multiplying I don't know at all.

Question: How I must fix my code, to make everything work?

1 Answers

Try the following logic:

if currentOp == Operation.add {
    savedNumber += number
} else if currentOp == Operation.subtract {
    savedNumber -= number
} else if currentOp == Operation.multiply {
    savedNumber *= number
} else if currentOp == Operation.divide && number != 0 {
    savedNumber /= number
} else if currentOp == Operation.divide && number == 0 {
    label.stringValue = "Banned"
    return
}
Related