Swift 实践简单计算器

更多文章:http://blog.csdn.net/qq_29284809
页面的布局使用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 = ""
    
}

}

Untitled.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,180评论 4 61
  • 漆黑的夜并不能遮掩没落的心 百年孤独舒了谁的孤芳自赏 看着挣扎与纠结的人群 只想为自己寻一片心灵的净土 冲动与所谓...
    雅致的慧姑娘阅读 560评论 2 5
  • 2.28 昨天和魏先生下班回家,骑着小电驴去拿快递的时候,我说他给我买的雅诗兰黛的口红味道很好闻,每次涂都很想吃。...
    小菠萝的日常阅读 114评论 0 0