服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Swift - 使用swift实现计算器功能

使用swift实现计算器功能

2022-07-21 10:37魏武天下 Swift

这篇文章主要为大家详细介绍了使用swift实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

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

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

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

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

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

使用swift实现计算器功能

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//
//  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
        
    }
    
}

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

原文链接:https://blog.csdn.net/weixin_44729676/article/details/89791736

延伸 · 阅读

精彩推荐
  • SwiftSwift中定义二维数组的方法及遍历方法示例

    Swift中定义二维数组的方法及遍历方法示例

    这篇文章主要介绍了Swift中定义二维数组的方法及遍历方法示例,本文直接给出代码示例,需要的朋友可以参考下...

    Swift教程网3292020-12-20
  • SwiftSwiftUI 中创建反弹动画的实现

    SwiftUI 中创建反弹动画的实现

    这篇文章主要介绍了SwiftUI 中创建反弹动画的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    firerainky11472021-01-16
  • Swift详谈swift内存管理中的引用计数

    详谈swift内存管理中的引用计数

    下面小编就为大家带来一篇详谈swift内存管理中的引用计数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    冬日降临9042021-01-06
  • Swiftswift3.0 创建sqlite数据库步骤方法

    swift3.0 创建sqlite数据库步骤方法

    本篇文章主要介绍了swift3.0 创建sqlite数据库步骤方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    tergun9702021-01-05
  • Swift详解Swift编程中的常量和变量

    详解Swift编程中的常量和变量

    这篇文章主要介绍了Swift编程中的常量和变量,是Swift入门学习中的基础知识,需要的朋友可以参考下...

    Swift教程网5102020-12-22
  • SwiftSwift调用Objective-C代码

    Swift调用Objective-C代码

    目前Swift语言所编写的应用才刚刚可以使用Xcode 6 GM版本提交,而Objective-C作为苹果的主开发语言存在了很多年了。目前尚无成熟的Swift库可用,所以当前编写...

    Swift教程网4632020-12-16
  • SwiftSwift图像处理之优化照片

    Swift图像处理之优化照片

    Core Image能通过分析图片的各个属性,人脸的区域等进行自动优化图片。我们只需要调用autoAdjustmentFiltersWithOptions这个API方法获取各个自动增强滤镜来优化图...

    yuhang2782020-12-24
  • Swift详解Swift编程中的for循环的编写方法

    详解Swift编程中的for循环的编写方法

    这篇文章主要介绍了Swift编程中的for循环的编写方法,包括相关的for...in循环,需要的朋友可以参考下...

    Swift教程网4772020-12-22