我使用的是 Swift 4,数字均为 Int 格式。
所以我制作了一个计算类文件:
import Foundation
import UIKit
class Calculation {
var result = Int()
var operationButton = String()
var currentNumber = Int()
func calculator() {
switch operationButton {
case "+":
result = result + currentNumber
case "-":
result = result - currentNumber
case "*":
result = result * currentNumber
case "/":
result = result / currentNumber
case "=":
result = currentNumber
default:
break
}
}
func textClear() {
result = 0
currentNumber = 0
operationButton = "="
}
然后我在 UIControllerView 中为 AC 按钮、数字按钮和操作按钮创建了 3 个函数,以直接从按钮标题获取“0-9”和“-,+,*,/,=”。
class ViewController: UIViewController {
@IBOutlet weak var resultTextField: UITextField!
var calculation = Calculation()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
calculation.operationButton = "="
resultTextField.text = "\(calculation.result)"
}
@IBAction func allClearButtonPressed(_ sender: UIButton) {
calculation.textClear()
resultTextField.text = "\(calculation.result)"
}
@IBAction func operationButtonPressed(_ sender: UIButton) {
calculation.operationButton = sender.titleLabel!.text as String!
calculation.operationButton = sender.titleLabel!.text!
calculation.calculator()
resultTextField.text = "\(calculation.result)"
}
@IBAction func numberButtonPressed(_ sender: UIButton) {
calculation.currentNumber = Int((sender.titleLabel?.text)!)!
let numberInput = String(calculation.currentNumber)
resultTextField.text = numberInput
}
}
第一个问题是,每当我尝试输入一个数字(例如 21)时,它只会返回 2,然后替换为 1。第二个问题是运算符总是向“resultTextField”返回零。
最佳答案
您的numberButtonPressed
函数读取按钮的文本,替换currentNumber
,然后将其分配给resultTextField.text
。您想要的是一个将新数字添加到当前号码的功能。在您的 Calculator
类中。
func pressedDigit(_ digit: Int) {
currentNumber = currentNumber * 10 + digit
}
然后您可以调用此函数并将 currentNumber 分配给您的 resultTextField
。
@IBAction func numberButtonPressed(_ sender: UIButton) {
guard let digit = sender.titleLabel?.text?.flatMap({ Int(String($0)) }) else { return }
calculation.pressedDigit(value: digit)
resultTextField.text = "\(calculation.currentNumber)"
}
每次计算后,您还必须重置currentNumber
。
关于swift - 计算器应用程序无法获取多位数字并且运算始终返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47199627/