swift实现简易计算器功能-kb88凯时官网登录

来自:网络
时间:2023-07-25
阅读:

用swift写一个简单计算器的demo,供大家参考,具体内容如下

实验环境:

xcode v6.4   & os x yosemite 10.10

功能描述:

1、实现加减乘除+根号(结果display为double型)
2、边界适应:各元素之间的距离固定,且适应手机旋转(roate)
(学习过程,根据stanford的swift课程而写的程序)

swift实现简易计算器功能

代码实现:
 

//
//  viewcontroller.swift
//  calculator
//
//  created by vincentyau on 4/7/16.
//  d88尊龙官网手机app copyright (c) 2016 vincentyau. all rights reserved.
//
import uikit
class viewcontroller: uiviewcontroller
{
    @iboutlet weak var display: uilabel!
    var userisinthemiddleoftypinganumber:bool = false
    //用户是否已经输入数字,由于swift的变量必须负初始值,所以设为false
    @ibaction func appenddigit(sender: uibutton){
        let digit = sender.currenttitle!//直接获取button的数字
        //若已输入过数字,则直接往display中添加数字,否则直接现实新点击数字,去除原始0的操作
        if userisinthemiddleoftypinganumber{
            display.text = display.text!   digit
        }else{
            display.text = digit
            userisinthemiddleoftypinganumber = true
        }
    }
    //对数字进行运算
    @ibaction func operate(sender: uibutton) {
        let operation = sender.currenttitle!
        if userisinthemiddleoftypinganumber{
            enter()
        }
        switch operation{
        /*swift算法极为简洁,当调用方法performoperation时,其自动对比方法的参数,而无需在
         *调用方法时写明参数类型,例如,这里的参数$0 与 $1并没有指明类型,而swift会直接将其适应为
         *方法performopetation中的double型
        */
        case "×": performoperation { $0 * $1 }
        case "÷": performoperation { $1 / $0 }
        case " ": performoperation { $0   $1 }
        case "−": performoperation { $1 - $0 }
        case "√": performoperation { sqrt($0) }
        default: break
        }
    }
    //两个参数进行运算的方法
    func performoperation(operation: (double,double) -> double){
        if operandstack.count >= 2 {
            displayvalue = operation(operandstack.removelast(),operandstack.removelast())
            enter()
        }
    }
    //一个参数进行运算的方法,swift支持方法的重载,但obj-c不允许,这里继承了obj-c的
    //类uiviewcoller,不能重载方法performoperation,故将其变为private方法
    private func performoperation(operation: double -> double){
        if operandstack.count >= 1 {
            displayvalue = operation(operandstack.removelast())
            enter()
        }
    }
    var operandstack = array()  
    //若用户点击enter,则将相应数字添加至数组array中  
    @ibaction func enter() {
        userisinthemiddleoftypinganumber = false
        operandstack.append(displayvalue)
        println("operandstack = \(operandstack)")
    }
    var displayvalue: double {
        get{
            return nsnumberformatter().numberfromstring(display.text!)!.doublevalue
        }
        set{
            display.text = "\(newvalue)"
            userisinthemiddleoftypinganumber = false
        }
    }
}

注意:

这里容易忽略的是,各元素之间的距离还有元素与边界的距离,设置好后如下:

swift实现简易计算器功能

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

返回顶部
顶部
网站地图