接上一篇,我已经完成了多个小数点,除零,格式异常等处理,直接上代码,使用swift写的。
首先是一个处理栈等基本功能的类。
//定义一个处理基本操作的类
class CalculateTool: NSObject {
var opndStack:Array<String>? //运算数栈
var optrStack:Array<String>? //运算符栈
//初始化运算数栈
func initOpndStack()
{
opndStack = Array<String>()
}
//初始化运算符栈
func initOptrStack(){
optrStack = Array<String>()
}
//压入运算数
func pushOperand(operand:String)
{
opndStack?.append(operand)
}
//压入运算符
func pushOperator(optr:String)
{
optrStack?.append(optr)
}
//弹出一个运算数,返回弹出数:小数点也是数
func popOperand() -> Float
{
if opndStack?.count > 0
{
let last = opndStack?.last
opndStack?.removeLast()
let lastString = last! as NSString
return lastString.floatValue
}
return 0.0
}
//弹出一个运算符
func popOperator() -> String
{
if optrStack?.count>0
{
let last = optrStack?.last
optrStack?.removeLast()
return last!
}
return ""
}
//取栈顶运算数
func getTopOperand() -> Float
{