我需要帮助使计算器快速运行

时间:2019-05-21 14:19:01

标签: ios swift calculator

我的问题是我可以单击并输入多个数字作为我的第一个值,但是在我使用数学运算符(例如+,-,*,/)之后,它只允许我输入一个值,这与第一次不同运行它,有人可以帮助我吗?

我是Swift的新手,这将是我的第一个Swift应用程序,到目前为止,我还不知道该怎么做或尝试什么。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var Label: UILabel!
    var secondNumber: Double = 0;
    var firstNumber: Double = 0;
    var performingMath = false
    var operatorUsed = 0;


    @IBAction func cleartext(_ sender: UIButton) {
        Label.text = ""
        performingMath = false
    }

    @IBAction func Numbers(_ sender: UIButton) {
        if performingMath {
            Label.text = String(sender.tag - 1)
            secondNumber = Double(Label.text!)!
            performingMath = true
        } else {
            Label.text = Label.text! + String(sender.tag - 1)
            secondNumber = Double(Label.text!)!
        }
    }

    @IBAction func Operators(_ sender: UIButton) {
        if Label.text != " " && sender.tag != 11 {
            firstNumber = Double(Label.text!)!

            if sender.tag == 12 {
                Label.text = "+"
            } else if sender.tag == 13 {
                Label.text = "-"
            } else if sender.tag == 14 {
                Label.text = "*"
            } else if sender.tag == 15 {
                Label.text = "/"
            }
            operatorUsed = sender.tag
            performingMath = true
        } else if sender.tag == 11 {
            if operatorUsed == 12 {
                Label.text = String(firstNumber + secondNumber)
            } 
            if operatorUsed == 13 {
                Label.text = String(firstNumber - secondNumber)
            }
            if operatorUsed == 14 {
                Label.text = String(firstNumber * secondNumber)
            }
            if operatorUsed == 15 {
               Label.text = String(firstNumber / secondNumber)
            }
        }
    }
}

我希望我可以使用数学运算符(例如+-* /)之后输入尽可能多的值

1 个答案:

答案 0 :(得分:0)

performingMathtrue时更新标签的文本时,只需分配新值,而不是将值添加到现有值(请参见第3行)

@IBAction func Numbers(_ sender: UIButton) {
    if performingMath {
        Label.text = String(sender.tag - 1) // !! HERE !!
        secondNumber = Double(Label.text!)!
        performingMath = true
    } else {
        Label.text = Label.text! + String(sender.tag - 1)
        secondNumber = Double(Label.text!)!
    }
}

此操作应与performingMathfalse时执行相同的操作,因此您只需使用以下命令更新此行:

Label.text = Label.text! + String(sender.tag - 1)