мне нужна помощь в создании калькулятора - PullRequest
0 голосов
/ 21 мая 2019

Моя проблема в том, что я могу щелкнуть и ввести несколько чисел для моего первого значения, но затем, после того как я использовал математический оператор (например, +, -, *, /), он позволяет мне вводить только одно значение в отличие от первого разакто-нибудь может мне помочь?

Я новичок в 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 голосов
/ 21 мая 2019

Когда вы обновляете текст метки, когда performingMath равен true, вы просто назначаете новое значение вместо добавления значения к существующему (см. Строку 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!)!
    }
}

Это должно выполнитьто же действие, что и когда performingMath равно false, поэтому вам просто нужно обновить эту строку:

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