我正在制作一个最基本的计算器,从斯坦福在线课程中学习。我只做了一个“乘法”按钮,它在Array“operandStack”中乘以两个值,但每次我的程序崩溃而且我不知道为什么。
import UIKit
class ViewController: UIViewController
{
@IBOutlet weak var display: UILabel!
var userIsInTheMiddleOfTypingANumber:Bool = false
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
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 {
case "×":
if operandStack.count >= 2 {
displayValue = operandStack.removeLast() * operandStack.removeLast()
enter()
}
default: break
}
}
var operandStack = Array<Double> ()
@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 :(得分:0)
当我注意到我的加号时,我解决了我的问题,更少的标志和分开的标志与Touch Up内部的2个已发送事件相关联(View Controller - &gt; appendDigit并运行)。我从appendDigit断开了我的标志,它工作正常。甚至我在发送者函数中添加了一个参数
$.post('testPht.php', {mobile_no: mobile_no}, function(data)
{
if(data.trim() == "Record Found")
{
// do what you want if record is founded
}
else if(data.trim() == "Record not Found")
{
// do what you want if record not founded
}
});
我使用了这样的输入函数:输入(发送者)。 另一个问题是这行代码:
@IBAction func enter(sender: AnyObject?) {
userIsInTheMiddleOfTypingANumber = false
operandStack.append(displayValue)
println("operandStack = \(operandStack)")
}
我改变了这一行:
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
正如我在这个讨论fatal error: unexpectedly found nil while unwrapping an Optional value - Standford Calculator 中所看到的那样
我希望这有助于程序员检查斯坦福课程。