最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用swift實現(xiàn)計算器功能

 更新時間:2022年01月26日 08:38:49   作者:魏武天下  
這篇文章主要為大家詳細介紹了使用swift實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

關于計算器的實現(xiàn)在做之前想了幾個方案。

首先是做一個輸入功能,再以后綴表達式來進行計算,但是這個更適用于做一個科學計算器,在平日生活中的計算器需要一些便捷的計算效果。

所以實現(xiàn)這個計算器使用了將數(shù)字存入Label然后轉化String為Int的方式。

算數(shù)符號可以存于一個數(shù)組內,以數(shù)組自帶的編號來表示運算符,
程序內需要儲存的數(shù)字可以簡單的兩個,但是只用兩個數(shù)字以類似 sum1 += sum2的形式會有一些小BUG出現(xiàn),所以中間加了一個過渡數(shù)字。

計算器里有三個布爾類型的值來分別判斷:之前是否輸入過等于號,這個數(shù)字是否是負數(shù),以及是否輸入過操作符號。(等于號的判斷是為了查看過度數(shù)字應該取哪個值,是否輸入過加減號可以讓等于結果之后按數(shù)字就可以進入下一個運算。)

這個計算器可以實現(xiàn)一些比較簡單的運算,運算符的優(yōu)先級并未作出判定,但是還是很適用于生活中的運算。

這個計算機的小bug就是在每輸入兩個數(shù)字進行運算后必須按等于號,不能以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//判斷是否負數(shù)
? ? var isControl:Bool = false//判斷是否輸入操作符
? ? var input:Double = 0.0//存儲輸入數(shù)字
? ? var lastRes:Double = 0.0//存儲過度數(shù)字
? ? 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) {
? ? ? ? //取數(shù)字
? ? ? ? if isMinus {//取負數(shù)后下次顯示區(qū)清零
? ? ? ? ? ? resultsum.text = "0"
? ? ? ? }
? ? ? ? if isControl{//輸入運算符后下次顯示區(qū)清零
? ? ? ? ? ? resultsum.text = "0"
? ? ? ? }
? ? ? ? if(resultsum.text! != "0"){
? ? ? ? ? ? resultsum.text! += String(sender.tag)
? ? ? ? }else{
? ? ? ? ? ? resultsum.text! = String(sender.tag)
? ? ? ? }
? ? ? ? input = (resultsum.text! as NSString).doubleValue
? ? ? ? //獲得數(shù)字并存儲
? ? ? ? isEq = false
? ? ? ? isMinus = false
? ? ? ? isControl = false
? ? }
? ? @IBAction func touchPoint(_ sender: UIButton) {
? ? ? ? resultsum.text! += "."
? ? ? ? //加入小數(shù)點
? ? }
? ? @IBAction func touchMinus(_ sender: UIButton) {
? ? ? ? //負數(shù)操作
? ? ? ? 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
? ? ? ??
? ? }
? ??
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • OpenStack的Swift組件詳解

    OpenStack的Swift組件詳解

    這篇文章主要介紹了OpenStack的Swift組件,對swift感興趣的同學,可以參考下
    2021-04-04
  • Swift解決UITableView空數(shù)據(jù)視圖問題的簡單方法

    Swift解決UITableView空數(shù)據(jù)視圖問題的簡單方法

    這篇文章主要給大家介紹了關于Swift解決UITableView空數(shù)據(jù)視圖問題的簡單方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用swift具有一定的參考學習價值,需要的朋友可以參考下
    2018-10-10
  • Swift中圖片資源使用流程的優(yōu)化方法詳解

    Swift中圖片資源使用流程的優(yōu)化方法詳解

    這篇文章主要給大家介紹了關于Swift中圖片資源使用流程的優(yōu)化方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Swift中的指針操作和使用詳細介紹

    Swift中的指針操作和使用詳細介紹

    這篇文章主要介紹了Swift中的指針操作和使用詳細介紹,Apple期望在Swift中指針能夠盡量減少登場幾率,因此在Swift中指針被映射為了一個泛型類型,并且還比較抽象,本文詳細講解了Swift中指針的相關知識,需要的朋友可以參考下
    2015-01-01
  • 深入講解Swift中的模式匹配

    深入講解Swift中的模式匹配

    在Swift中,一些模式已經(jīng)被語言特性所吸收,你在使用Swift甚至察覺不出這類問題的存在,下面這篇文章主要給大家介紹了關于Swift中模式匹配的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-08-08
  • Swift Set集合及常用方法詳解總結

    Swift Set集合及常用方法詳解總結

    Set集合為集類型,集是最簡單的一種集合,存放于集中的對象不按特定方式排序,只是簡單地把對象加入集合中,類似于向口袋里放東西,對集中存在的對象的訪問和操作是通過對象的引用進行的,因此在集中不能存放重復對象
    2021-11-11
  • Swift5中從原始文本創(chuàng)建字符串的方法

    Swift5中從原始文本創(chuàng)建字符串的方法

    這篇文章主要給大家介紹了關于Swift5中從原始文本創(chuàng)建字符串的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Swift5具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • SwiftUI?List在MacOS中的性能優(yōu)化示例

    SwiftUI?List在MacOS中的性能優(yōu)化示例

    這篇文章主要為大家介紹了SwiftUI?List在MacOS中的性能優(yōu)化示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 使用swift實現(xiàn)計算器功能

    使用swift實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了使用swift實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 關于Swift 4.1中的Codable改進詳解

    關于Swift 4.1中的Codable改進詳解

    這篇文章主要給大家介紹了關于Swift 4.1中的Codable改進的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-02-02

最新評論

铜山县| 濉溪县| 当雄县| 客服| 凤凰县| 石阡县| 阳江市| 婺源县| 武宁县| 卓资县| 济宁市| 凉山| 调兵山市| 石河子市| 桂东县| 武鸣县| 霍城县| 华安县| 会东县| 玉林市| 竹山县| 昭平县| 广昌县| 七台河市| 佛冈县| 抚州市| 黄骅市| 武隆县| 漯河市| 绥棱县| 子洲县| 濮阳市| 原平市| 永康市| 静宁县| 常德市| 西青区| 武义县| 麟游县| 廊坊市| 锡林郭勒盟|