欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用swift實(shí)現(xiàn)計(jì)算器功能

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

關(guān)于計(jì)算器的實(shí)現(xiàn)在做之前想了幾個(gè)方案。

首先是做一個(gè)輸入功能,再以后綴表達(dá)式來(lái)進(jìn)行計(jì)算,但是這個(gè)更適用于做一個(gè)科學(xué)計(jì)算器,在平日生活中的計(jì)算器需要一些便捷的計(jì)算效果。

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

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

計(jì)算器里有三個(gè)布爾類(lèi)型的值來(lái)分別判斷:之前是否輸入過(guò)等于號(hào),這個(gè)數(shù)字是否是負(fù)數(shù),以及是否輸入過(guò)操作符號(hào)。(等于號(hào)的判斷是為了查看過(guò)度數(shù)字應(yīng)該取哪個(gè)值,是否輸入過(guò)加減號(hào)可以讓等于結(jié)果之后按數(shù)字就可以進(jìn)入下一個(gè)運(yùn)算。)

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

這個(gè)計(jì)算機(jī)的小bug就是在每輸入兩個(gè)數(shù)字進(jìn)行運(yùn)算后必須按等于號(hào),不能以a+b+c+…………的形式計(jì)算,只能用于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//判斷是否輸入等于號(hào)
? ? var isMinus:Bool = false//判斷是否負(fù)數(shù)
? ? var isControl:Bool = false//判斷是否輸入操作符
? ? var input:Double = 0.0//存儲(chǔ)輸入數(shù)字
? ? var lastRes:Double = 0.0//存儲(chǔ)過(guò)度數(shù)字
? ? var res:Double = 0.0//存儲(chǔ)a答案
? ? var fh:Int = 0//符號(hào)tag
? ? var math:Int = 0//運(yùn)算符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 {//取負(fù)數(shù)后下次顯示區(qū)清零
? ? ? ? ? ? resultsum.text = "0"
? ? ? ? }
? ? ? ? if isControl{//輸入運(yùn)算符后下次顯示區(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ù)字并存儲(chǔ)
? ? ? ? isEq = false
? ? ? ? isMinus = false
? ? ? ? isControl = false
? ? }
? ? @IBAction func touchPoint(_ sender: UIButton) {
? ? ? ? resultsum.text! += "."
? ? ? ? //加入小數(shù)點(diǎn)
? ? }
? ? @IBAction func touchMinus(_ sender: UIButton) {
? ? ? ? //負(fù)數(shù)操作
? ? ? ? if (res == 0){
? ? ? ? ? ? equal(sender)
? ? ? ? ? ? res = -input
? ? ? ? } else{
? ? ? ? ? ? res = -res
? ? ? ? }
? ? ? ? resultsum.text = String(res)
? ? ? ? isMinus = true
? ? }
? ? @IBAction func equal(_ sender: UIButton) {
? ? ? ? //等號(hào)運(yùn)算
? ? ? ? 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) {
? ? ? ? //刪除上一個(gè)字符
? ? ? ? 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) {
? ? ? ? //輸入運(yùn)算符
? ? ? ? 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) {
? ? ? ? //清空所有儲(chǔ)存
? ? ? ? res = 0
? ? ? ? lastRes = 0
? ? ? ? input = 0
? ? ? ? resultsum.text = "0"
? ? ? ? isControl = false
? ? }
? ??
? ??
? ? @IBAction func touchMath(_ sender: UIButton) {
? ? ? ? //便捷運(yùn)算
? ? ? ? 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
? ? ? ??
? ? }
? ??
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Swift map和filter函數(shù)原型基礎(chǔ)示例

    Swift map和filter函數(shù)原型基礎(chǔ)示例

    這篇文章主要為大家介紹了Swift map和filter函數(shù)原型基礎(chǔ)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • swiftui開(kāi)發(fā)之padding默認(rèn)值設(shè)置詳解

    swiftui開(kāi)發(fā)之padding默認(rèn)值設(shè)置詳解

    這篇文章主要為大家介紹了swiftui開(kāi)發(fā)之padding默認(rèn)值設(shè)置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 關(guān)于swift的個(gè)人小結(jié)

    關(guān)于swift的個(gè)人小結(jié)

    本文是個(gè)人對(duì)于目前學(xué)習(xí)swift的一些心得的匯總,這里分享給大家,希望大家能夠喜歡
    2016-12-12
  • Swift編程中的switch...case語(yǔ)句實(shí)例解析

    Swift編程中的switch...case語(yǔ)句實(shí)例解析

    這篇文章主要介紹了Swift編程中的switch...case語(yǔ)句實(shí)例解析,其中重點(diǎn)還是對(duì)于fallthrough關(guān)鍵字用法的講解,需要的朋友可以參考下
    2016-04-04
  • Swift自動(dòng)調(diào)整視圖布局AutoLayout和AutoresizingMask功能詳解

    Swift自動(dòng)調(diào)整視圖布局AutoLayout和AutoresizingMask功能詳解

    這篇文章主要為大家介紹了Swift自動(dòng)調(diào)整視圖布局AutoLayout和AutoresizingMask功能及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • SwiftUI圖片縮放、拼圖等處理教程

    SwiftUI圖片縮放、拼圖等處理教程

    SwiftUI是一種使用Swift語(yǔ)言在蘋(píng)果設(shè)備上構(gòu)建用戶界面的創(chuàng)新且簡(jiǎn)單的方式,下面這篇文章主要給大家介紹了關(guān)于SwiftUI圖片縮放、拼圖等處理的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Swift函數(shù)提前返回實(shí)例詳解

    Swift函數(shù)提前返回實(shí)例詳解

    函數(shù)相當(dāng)重要的,下面這篇文章主要給大家介紹了關(guān)于Swift函數(shù)提前返回的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 深入解析Swift語(yǔ)言中的協(xié)議

    深入解析Swift語(yǔ)言中的協(xié)議

    這篇文章主要介紹了深入解析Swift語(yǔ)言中的協(xié)議,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Swift源碼解析之弱引用

    Swift源碼解析之弱引用

    這篇文章主要給大家介紹了關(guān)于Swift源碼解析之弱引用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Swift 3.0基礎(chǔ)學(xué)習(xí)之類(lèi)與結(jié)構(gòu)體

    Swift 3.0基礎(chǔ)學(xué)習(xí)之類(lèi)與結(jié)構(gòu)體

    最近在學(xué)swift 3.0,主要看的是蘋(píng)果的官方文檔,這里只是根據(jù)自己看官方文檔的理解所做的一些記錄,不是完整的翻譯,希望也對(duì)你有所幫助。下面這篇文章主要介紹了Swift 3.0基礎(chǔ)學(xué)習(xí)之類(lèi)與結(jié)構(gòu)體的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03

最新評(píng)論