问题:我试图在Swift for MacOS中做简单的Int计算器。它工作得很好,除了两件事。我想显示";报警";当我除以零时,在标签中。此外,如果第一个输入数字是"0";0";,因此在按下乘法按钮(例如0*5(之后;5〃;在标签中改为";0〃;。我寻找解决方案,我尝试了所有可能的变体,但它并没有像我想要的那样起作用。
@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()
}
这是我代码的一部分,我认为问题就在这里。对于每个按钮,我都使用了功能。我看到了labelString值是否为";333〃;,则在将dy除以零之后,它写入333(5/0=333(。但它不适用于文字。我根本不知道该怎么乘。
问题:我必须如何修复我的代码,才能使一切正常工作?
尝试以下逻辑:
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
}