Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 快速区分清除(C)和全部清除(AC)_Ios_Swift_Calculator_Rpn - Fatal编程技术网

Ios 快速区分清除(C)和全部清除(AC)

Ios 快速区分清除(C)和全部清除(AC),ios,swift,calculator,rpn,Ios,Swift,Calculator,Rpn,你好,我是一个初学者,我正在建立一个RPN计算器。 我的所有操作都在一个名为calcengine的独立viewcontroller中执行。 我有一些空调代码,我有两个问题: @IBAction func AllClear(sender: UIButton) { userHasStartedTyping = false labelDisplay.text = "\(0)" self.calcEngine!.operandStack.removeAll() } 以下是

你好,我是一个初学者,我正在建立一个RPN计算器。 我的所有操作都在一个名为calcengine的独立viewcontroller中执行。 我有一些空调代码,我有两个问题:

 @IBAction func AllClear(sender: UIButton) {
    userHasStartedTyping = false
    labelDisplay.text = "\(0)"
    self.calcEngine!.operandStack.removeAll()  
}
以下是viewcontroller中的计算代码:

@IBAction func operation(sender: UIButton) {
    let operation = sender.currentTitle!
    if userHasStartedTyping { 
        Enter()  
    }
    self.displayValue = (self.calcEngine?.operate(operation))!
    Enter() 
}
以及calcengine中的计算代码:

class CalculatorEngine: NSObject   
{ 
var operandStack = Array<Double>() //array

func updateStackWithValue(value: Double)
{ self.operandStack.append(value) }

func operate(operation: String) ->Double
{ switch operation

{

case "×":
    if operandStack.count >= 2 {
        return self.operandStack.removeLast() *         self.operandStack.removeLast()
    }


case "÷":
    if operandStack.count >= 2 {
        return self.operandStack.removeFirst() / self.operandStack.removeLast()
    }


case "+":
    if operandStack.count >= 2 {
        return self.operandStack.removeLast() + self.operandStack.removeLast()
    }


case "−":
    if operandStack.count >= 2 {
        return self.operandStack.removeFirst() -      self.operandStack.removeLast()
    }

    default:break
    }
    return 0.0
}
}
class CalculatorEngine:NSObject
{ 
var operandStack=Array()//数组
func updateStackWithValue(值:双精度)
{self.operandStack.append(value)}
func操作(操作:字符串)->Double
{开关操作
{
案例“×”:
如果操作数Stack.count>=2{
返回self.operanstack.removeLast()*self.operanstack.removeLast()
}
案例“÷”:
如果操作数Stack.count>=2{
返回self.operanstack.removeFirst()/self.operanstack.removeLast()
}
格“+”:
如果操作数Stack.count>=2{
返回self.operanstack.removeLast()+self.operanstack.removeLast()
}
案例”−":
如果操作数Stack.count>=2{
返回self.operanstack.removeFirst()-self.operanstack.removeLast()
}
默认值:中断
}
返回0.0
}
}
  • 此代码清除所有已完成的计算是否正确
  • 我如何区分这个函数和Clear函数,并为Clear构建代码
  • 计算器上典型的“清除”按钮仅清除用户输入的数字。在您的情况下,这类似于AllClear(),但不会清空RPN堆栈:

    @IBAction func Clear(sender: UIButton) 
    {
        userHasStartedTyping = false
        labelDisplay.text = "\(0)"
    }
    

    1) 因为我们不知道你是如何计算的,所以我们不能确定。2)代码取决于差异是什么。这个问题可能太广泛了。@Abizern我刚刚编辑了这个问题:)如果你能看一看……非常感谢