【问题标题】:Making a calculator in Swift用 Swift 制作计算器
【发布时间】:2019-05-21 14:19:00
【问题描述】:

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

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)
            }
        }
    }
}

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

【问题讨论】:

  • 与您的问题无关,但请注意,通常的做法是命名变量、函数和枚举大小写以小写字母开头。类、结构和枚举名称以大写字母开头。

标签: ios swift calculator


【解决方案1】:

当您在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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多