In dem Code ist ein kleines Problem, das ich versuche zu lösen, aber noch nicht die Lösung gefunden.
Dieser Code ist für den Taschenrechner.
Es macht richtige Berechnungen.
Aber wenn ich "Clear" -Taste drücken, bleibt vor der neuen Berechnung "0".
Zum Beispiel: Ich drücke "clear" und nach "2". Auf dem Bildschirm erscheint "02".
Ich wäre sehr dankbar, wenn sich jemand den Code ansehen und die Lösung sehen würde.Swift Rechner. "0" bleibt auf dem Bildschirm
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var outputLbl: UILabel!
var btnSound: AVAudioPlayer!
@IBAction func clearBtnPressed(_ sender: Any) {
playSound()
runningNumber = ""
leftValStr = ""
outputLbl.text = ""
currentOperation = Operation.Empty
}
enum Operation: String {
case Divide = "/"
case Multiply = "*"
case Subtract = "-"
case Add = "+"
case Empty = "Empty"
}
var currentOperation = Operation.Empty
var runningNumber = ""
var leftValStr = ""
var rightValStr = ""
var result = ""
override func viewDidLoad() {
super.viewDidLoad()
let path = Bundle.main.path(forResource: "btn", ofType: "wav")
let soundURL = URL(fileURLWithPath: path!)
do {
try btnSound = AVAudioPlayer(contentsOf: soundURL)
btnSound.prepareToPlay()
} catch let err as NSError {
print(err.debugDescription)
}
outputLbl.text = ""
}
@IBAction func numberPressed(sender: UIButton) {
playSound()
runningNumber += "\(sender.tag)"
outputLbl.text = runningNumber
}
@IBAction func onDividePressed(sender: AnyObject) {
processOperation(operation: .Divide)
}
@IBAction func onMultiplyPressed(sender: AnyObject) {
processOperation(operation: .Multiply)
}
@IBAction func onSubtractPressed(sender: AnyObject) {
processOperation(operation: .Subtract)
}
@IBAction func onAddPressed(sender: AnyObject) {
processOperation(operation: .Add)
}
@IBAction func onEqualPressed(sender: AnyObject) {
processOperation(operation: currentOperation)
}
func playSound() {
if btnSound.isPlaying {
btnSound.stop()
}
btnSound.play()
}
func processOperation(operation: Operation) {
playSound()
if currentOperation != Operation.Empty {
if runningNumber != "" {
rightValStr = runningNumber
runningNumber = ""
if currentOperation == Operation.Multiply {
result = "\(Double(leftValStr)! * Double(rightValStr)!)"
} else if currentOperation == Operation.Divide {
result = "\(Double(leftValStr)!/Double(rightValStr)!)"
} else if currentOperation == Operation.Subtract {
result = "\(Double(leftValStr)! - Double(rightValStr)!)"
} else if currentOperation == Operation.Add {
result = "\(Double(leftValStr)! + Double(rightValStr)!)"
}
leftValStr = result
outputLbl.text = result
}
currentOperation = operation
} else {
leftValStr = runningNumber
runningNumber = ""
currentOperation = operation
}
}
}
fügen Sie eine Bedingung zu Ihrer Zahl hinzuPressed, um 'if whatever ==" 0 "' zu überprüfen, ersetzen Sie es andernfalls an die Zeichenkette –
Woher kommt die '0', nachdem Sie' clear' gedrückt haben? Beim Hinzufügen von Ziffern handelt es sich um Text und nicht um Zahlen, so dass führende Nullen erhalten bleiben. – vadian