В коде есть одна небольшая проблема, которую я пытаюсь решить, но еще не нашел решение.
Этот код предназначен для калькулятора.
Выполнение правильных расчетов.
Но когда я нажимаю кнопку «clear», перед новым вычислением остается «0».
Например: Я нажимаю «clear» и после «2». На экране появится «02».
Я был бы очень признателен, если бы кто-то посмотрел на код и посмотрел решение.Быстрый калькулятор. «0» остается на экране
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
}
}
}
Добавить условное значение на ваш номер. Подписано, чтобы проверить 'if whatever ==" 0 "заменить его иначе, добавив его в строку –
. Откуда появляется' 0' после нажатия 'clear'? Вы имеете дело с текстом, а не с цифрами, добавляя цифры, так что ведущие нули остаются. – vadian