Swift实现简单计算器

 更新时间:2022年01月27日 10:05:03   作者:qq_29284809  
这篇文章主要为大家详细介绍了Swift实现简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Swift实现简单计算器的具体代码,供大家参考,具体内容如下

使用Storyboard

快速而又方便的进行控件的布局,功能操作简单的进行一些运算;

代码实现

//
//  ViewController.swift
//  Swift_Calculator
//
//  Created by 周文春 on 16/3/2.
//  Copyright © 2016年 周文春. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var lableResult: UILabel!

    //第一操作
    var firstOperand: Double = 0.0
    //第二操作
    var secondOperand: Double = 0.0
    //标记是否输入了小数点
    var decimalPointFlag: Bool = false
    //是否输入第二操作数
    var isSecond: Bool = false
    //操作符
    var operatorFlag: String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func buttonTap(sender: UIButton) {
        //lableResult 中默认是0,如果开始输入数字,则先清除0
        if lableResult.text == "0" || (isSecond && secondOperand == 0.0) {

            lableResult.text = ""
        }
        //将用户录入的数添加到lableResult中
        lableResult.text = lableResult.text! + sender.titleLabel!.text!

        if isSecond {
//            secondOperand = (lableResult.text! as NSString).doubleValue
            secondOperand = NSString(string: lableResult.text!).doubleValue
        }else {
            //将lableResult中的字符串转化为双精度数
//            firstOperand = (lableResult.text! as NSString).doubleValue
            firstOperand = NSString(string: lableResult.text!).doubleValue
        }
        print(firstOperand)
    }


    @IBAction func decimalPointTap() {

        if !decimalPointFlag {
            lableResult.text = lableResult.text! + "."
            if isSecond {
                secondOperand = (lableResult.text! as NSString).doubleValue
            }else {
                firstOperand = (lableResult.text! as NSString).doubleValue
            }

            decimalPointFlag = !decimalPointFlag
        }
    }


    @IBAction func operatorTap(sender: UIButton) {
        if firstOperand != 0 {
            isSecond = true
            decimalPointFlag = false
            switch sender.titleLabel!.text! {
                case "+":
                      operatorFlag = "+"
                case "-":
                      operatorFlag = "-"
                case "*":
                      operatorFlag = "*"
                case "÷":
                      operatorFlag = "/"
            default:
                      operatorFlag = " "
            }
        }
    }


    @IBAction func resultTap(sender: UIButton) {
        //确保第二操作数有值
        if isSecond {
            //除数不能为0
            if operatorFlag == "/" && secondOperand == 0 {
                print("Error: 除数不能为0")
                return
            }

            var result: Double = 0.0
            switch operatorFlag {
                case "+":
                result = firstOperand + secondOperand
                case "-":
                result = firstOperand - secondOperand
                case  "*":
                result = firstOperand * secondOperand
                case  "/":
                result = firstOperand / secondOperand
            default :
                result = 0.0
            }

            lableResult.text = result.description
            print("第一操作: \(firstOperand)")
            print("操作符: \(operatorFlag)")
            print("第二操作: \(secondOperand)")
            print("结果: \(result)")

        }

    }

    @IBAction func clear(sender: UIButton) {

        //lable对象显示0
        lableResult.text = "0"

        //第一操作数清零
        firstOperand = 0.0

        //第二操作数清零
        secondOperand = 0.0

        //小数点标记设置为假
        decimalPointFlag = false

        //第二操作数标记设置为假
        isSecond = false

        //操作清空
        operatorFlag = ""

    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 简单了解Swift语言中的break和continue语句的用法

    简单了解Swift语言中的break和continue语句的用法

    这篇文章主要简单介绍了Swift语言中的break和continue语句的用法,与其他语言的一样用于循环语句流程控制,需要的朋友可以参考下
    2015-11-11
  • swift 3.0中realm封装类示例代码

    swift 3.0中realm封装类示例代码

    这篇文章主要给大家介绍了关于swift 3.0中realm封装类的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用swift具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • Swift中闭包实战案例详解

    Swift中闭包实战案例详解

    接触过Swift的小伙伴对“闭包”应该不陌生,相当于OC中的Block,是Swift语法中比较难理解的一块。下面这篇文章主要介绍了关于Swift中闭包实战的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • 解析Swift语言面相对象编程中的继承特性

    解析Swift语言面相对象编程中的继承特性

    这篇文章主要介绍了解析Swift语言面相对象编程中的继承特性,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Swift5中fileprivate与private的差别浅析

    Swift5中fileprivate与private的差别浅析

    这篇文章主要给大家介绍了关于Swift5中fileprivate与private的差别的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Swift5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 分析Swift性能高效的原因

    分析Swift性能高效的原因

    绝大多数公司选择Swift语言开发iOS应用,主要原因是因为Swift相比Objc有更快的运行效率,更加安全的类型检测,更多现代语言的特性提升开发效率;这一系列的优点使Swift语言的热度越来越高。
    2020-10-10
  • Swift4使用GCD实现计时器

    Swift4使用GCD实现计时器

    这篇文章主要为大家详细介绍了Swift4使用GCD实现计时器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Swift缩放并填充图片功能的实现

    Swift缩放并填充图片功能的实现

    最近有一个需求,就是将图片先等比例缩放到指定大小,然后将空余出来空间填充为黑色,返回指定大小的图片。本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • Swift如何为网页承载页面添加更多功能详解

    Swift如何为网页承载页面添加更多功能详解

    这篇文章主要给大家介绍了关于Swift如何为网页承载页面添加更多功能的相关资料,包括添加菊花加载的效果、添加跳转到Safari的功能、添加复制链接的功能以及添加分享网页的功能,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • Swift实现多个TableView侧滑与切换效果

    Swift实现多个TableView侧滑与切换效果

    这篇文章主要为大家详细介绍了Swift实现多个TableView侧滑与切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论