Swift实现简易计算器功能

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

实验环境:

Xcode v6.4   & OS X Yosemite 10.10

功能描述:

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

代码实现:

//
//  ViewController.swift
//  Calculator
//
//  Created by VincentYau on 4/7/16.
//  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<Double>()  

    //若用户点击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
        }
    }
}

注意:

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

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

(0)

相关推荐

  • swift实现简单的计算器

    本文实例为大家分享了swift实现简单计算器的具体代码,供大家参考,具体内容如下 代码 // //  ViewController.swift //  Calculator // //  Created by tutujiaw on 15/4/25. //  Copyright (c) 2015年 tutujiaw. All rights reserved. //   import UIKit   class ViewController: UIViewController {       @I

  • Swift实现简单计算器项目

    本文实例为大家分享了Swift实现简单计算器项目的具体代码,供大家参考,具体内容如下 // //  ViewController.swift //  计算器 // //  Created by 悦兑科技 on 15/1/14. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController {     var numOne = UITextField(

  • 使用swift实现计算器功能

    关于计算器的实现在做之前想了几个方案. 首先是做一个输入功能,再以后缀表达式来进行计算,但是这个更适用于做一个科学计算器,在平日生活中的计算器需要一些便捷的计算效果. 所以实现这个计算器使用了将数字存入Label然后转化String为Int的方式. 算数符号可以存于一个数组内,以数组自带的编号来表示运算符,程序内需要储存的数字可以简单的两个,但是只用两个数字以类似 sum1 += sum2的形式会有一些小BUG出现,所以中间加了一个过渡数字. 计算器里有三个布尔类型的值来分别判断:之前是否输入过

  • Swift实现简易计算器功能

    用Swift写一个简单计算器的Demo,供大家参考,具体内容如下 实验环境: Xcode v6.4   & OS X Yosemite 10.10 功能描述: 1.实现加减乘除+根号(结果display为Double型)2.边界适应:各元素之间的距离固定,且适应手机旋转(Roate)(学习过程,根据Stanford的Swift课程而写的程序) 代码实现: // //  ViewController.swift //  Calculator // //  Created by VincentYau

  • Python PyQt5实现的简易计算器功能示例

    本文实例讲述了Python PyQt5实现的简易计算器功能.分享给大家供大家参考,具体如下: 这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30)) 3.取事件的的发送者(此例为各个按钮)的文本: self.sender().text() [效果图] [源代码] import sys from PyQt

  • Python正则表达式实现简易计算器功能示例

    本文实例讲述了Python正则表达式实现简易计算器功能.分享给大家供大家参考,具体如下: 需求:使用正则表达式完成一个简易计算器. 功能:能够计算简单的表达式. 如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2 import re class SimpleCalc(object): # 表达式检测 def check(self,exp): # 合法字符检测 res = re.findall(r"[^\d\+\-\*/\(\)\.]", exp) print(res) i

  • java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一个等号按钮.一个清除按钮, 要求将按键和结果显示在文本框中. 代码过程展示: import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.Action

  • C#实现简易计算器功能(附源码)

    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 剖析: 1.先设计界面(按钮.文本框(一个显示算式,一个显示结果))布局 2.单击按钮将其对应内容显示在文本框中 3.单击符号(+.-.×.÷.%)时将第一次输入的数储存起来 4.单击等号时将第二次输入的数存储起来并将第一次输入的数与第二次输入的数按照所单击的符号进行运算将结果显示在第一个文本框中 5.单击C时将两个文本框中的内容清空 重点: 1.声明一个bool类型的变量用于实现单击符号再次输入数字时第一次输入的数

  • swift实现简易计算器项目

    本文实例为大家分享了swift实现简易计算器的具体代码,供大家参考,具体内容如下 首先在storyboard中搭建出界面 接着上viewcontroller代码 import UIKit class ViewController: UIViewController {     @IBOutlet weak var result: UILabel!     var n1: String = ""     var n2: String = ""     var n3:

  • C语言实现简易计算器功能

    本文实例为大家分享了C语言实现简易计算器功能的具体代码,供大家参考,具体内容如下 表达式求值项目(多功能计算器).该项目主要包含了10个模块,10项功能: 1:加法运算:主要进行两个数的加法运算,可进行计算整数和浮点数: 2:减法运算:主要进行两个数的减法运算,可进行计算整数和浮点数: 3:乘法运算:主要进行两个数的乘法运算,可进行计算整数和浮点数: 4:除法运算:主要进行两个数的除法运算,可进行计算整数和浮点数:增加了报错功能,由于除数不可以为0,当用户输入的除数为0的时候,该项目会出提示红色

  • C#实现简易计算器功能(2)(窗体应用)

    本文实例为大家分享了C#实现简易计算器功能第二部分的具体代码,供大家参考,具体内容如下 初始化,实现四则运算 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using Sys

  • C#实现简易计算器功能(1)(窗体应用)

    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 实现页面布局和数值初始化 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using Syste

  • python实现简易计算器功能

    本文实例为大家分享了python实现简易计算器功能的具体代码,供大家参考,具体内容如下 一.功能目标 用户输入一个类似  1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))  这样的表达式,假设表达式里面除了包含空格.'+'.'-'.'*'.'/'和括号再无其他特殊符号,然后自己动手写代码解析其中的表达式,实现加减乘除,最后得出的结果与真实的计算机所算的结果必须一致. 二.解题思路 1.为了分开运算符和数

随机推荐