使用swift实现计算器功能

 更新时间:2022年01月26日 08:38:49   作者:魏武天下  
这篇文章主要为大家详细介绍了使用swift实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

关于计算器的实现在做之前想了几个方案。

首先是做一个输入功能,再以后缀表达式来进行计算,但是这个更适用于做一个科学计算器,在平日生活中的计算器需要一些便捷的计算效果。

所以实现这个计算器使用了将数字存入Label然后转化String为Int的方式。

算数符号可以存于一个数组内,以数组自带的编号来表示运算符,
程序内需要储存的数字可以简单的两个,但是只用两个数字以类似 sum1 += sum2的形式会有一些小BUG出现,所以中间加了一个过渡数字。

计算器里有三个布尔类型的值来分别判断:之前是否输入过等于号,这个数字是否是负数,以及是否输入过操作符号。(等于号的判断是为了查看过度数字应该取哪个值,是否输入过加减号可以让等于结果之后按数字就可以进入下一个运算。)

这个计算器可以实现一些比较简单的运算,运算符的优先级并未作出判定,但是还是很适用于生活中的运算。

这个计算机的小bug就是在每输入两个数字进行运算后必须按等于号,不能以a+b+c+…………的形式计算,只能用于a + b = ?

//
//  ViewController.swift
//  Calculator
//
//  Created by CQUPT-ZHX on 2019/4/27.
//  Copyright © 2019 cquptzhx. All rights reserved.
//

import UIKit
import Darwin

class ViewController: UIViewController {
   
    var Priority = ["+","-","*","÷","="]
    var isEq:Bool = false//判断是否输入等于号
    var isMinus:Bool = false//判断是否负数
    var isControl:Bool = false//判断是否输入操作符
    var input:Double = 0.0//存储输入数字
    var lastRes:Double = 0.0//存储过度数字
    var res:Double = 0.0//存储a答案
    var fh:Int = 0//符号tag
    var math:Int = 0//运算符tag
    
    @IBOutlet weak var resultsum: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    @IBAction func takesum(_ sender: UIButton) {
        //取数字
        if isMinus {//取负数后下次显示区清零
            resultsum.text = "0"
        }
        if isControl{//输入运算符后下次显示区清零
            resultsum.text = "0"
        }
        if(resultsum.text! != "0"){
            resultsum.text! += String(sender.tag)
        }else{
            resultsum.text! = String(sender.tag)
        }
        input = (resultsum.text! as NSString).doubleValue
        //获得数字并存储
        isEq = false
        isMinus = false
        isControl = false
    }
    @IBAction func touchPoint(_ sender: UIButton) {
        resultsum.text! += "."
        //加入小数点
    }
    @IBAction func touchMinus(_ sender: UIButton) {
        //负数操作
        if (res == 0){
            equal(sender)
            res = -input
        } else{
            res = -res
        }
        resultsum.text = String(res)
        isMinus = true
    }
    @IBAction func equal(_ sender: UIButton) {
        //等号运算
        switch(fh) {
            case 1:
                res = lastRes + input
            case 2:
                res = lastRes - input
            case 3:
                res = lastRes * input
            case 4:
                res = lastRes / input

            default:
                break
        }
        resultsum.text! = "\(res)"
        lastRes = res
        isEq = true
        isControl = true
    }
    @IBAction func backC(_ sender: UIButton) {
        //删除上一个字符
        if resultsum.text?.count == 1 {
            resultsum.text = "0"
        }
        else if (resultsum.text! as NSString).doubleValue != 0 {
            resultsum.text?.removeLast()
        }
        input = (resultsum.text! as NSString).doubleValue
    }
    
    @IBAction func getsign(_ sender: UIButton) {
        //输入运算符
        if sender.tag < 5 {
            resultsum.text! = Priority[sender.tag - 1]
            if isEq {
                lastRes = res
            }
            else {
                lastRes = input
            }
        }
        fh = sender.tag
        isControl = true
    }
    
    
    @IBAction func touchClean(_ sender: UIButton) {
        //清空所有储存
        res = 0
        lastRes = 0
        input = 0
        resultsum.text = "0"
        isControl = false
    }
    
    
    @IBAction func touchMath(_ sender: UIButton) {
        //便捷运算
        math = sender.tag
        if(res == 0){
            res = input
        }
        switch(math){
        case 7:
            res = res * 3.14
        case 8:
            res = res * res
        case 9:
            res = sin(res)
        case 10:
            res = cos(res)
        default:
            break
        }
        resultsum.text! = "\(res)"
         lastRes = res
        isEq = true
        
    }
    
}

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

相关文章

  • Swift map和filter函数原型基础示例

    Swift map和filter函数原型基础示例

    这篇文章主要为大家介绍了Swift map和filter函数原型基础示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • swiftui开发之padding默认值设置详解

    swiftui开发之padding默认值设置详解

    这篇文章主要为大家介绍了swiftui开发之padding默认值设置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 关于swift的个人小结

    关于swift的个人小结

    本文是个人对于目前学习swift的一些心得的汇总,这里分享给大家,希望大家能够喜欢
    2016-12-12
  • Swift编程中的switch...case语句实例解析

    Swift编程中的switch...case语句实例解析

    这篇文章主要介绍了Swift编程中的switch...case语句实例解析,其中重点还是对于fallthrough关键字用法的讲解,需要的朋友可以参考下
    2016-04-04
  • Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    这篇文章主要为大家介绍了Swift自动调整视图布局AutoLayout和AutoresizingMask功能及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • SwiftUI图片缩放、拼图等处理教程

    SwiftUI图片缩放、拼图等处理教程

    SwiftUI是一种使用Swift语言在苹果设备上构建用户界面的创新且简单的方式,下面这篇文章主要给大家介绍了关于SwiftUI图片缩放、拼图等处理的相关资料,需要的朋友可以参考下
    2021-08-08
  • Swift函数提前返回实例详解

    Swift函数提前返回实例详解

    函数相当重要的,下面这篇文章主要给大家介绍了关于Swift函数提前返回的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 深入解析Swift语言中的协议

    深入解析Swift语言中的协议

    这篇文章主要介绍了深入解析Swift语言中的协议,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Swift源码解析之弱引用

    Swift源码解析之弱引用

    这篇文章主要给大家介绍了关于Swift源码解析之弱引用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Swift 3.0基础学习之类与结构体

    Swift 3.0基础学习之类与结构体

    最近在学swift 3.0,主要看的是苹果的官方文档,这里只是根据自己看官方文档的理解所做的一些记录,不是完整的翻译,希望也对你有所帮助。下面这篇文章主要介绍了Swift 3.0基础学习之类与结构体的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03

最新评论