算术运算时的可选值 swift
Optional values when doing arithmetic swift
我正在为 iOS 使用 swift 创建一个计算器应用程序。当我输入大于 9 的数字时,我得到以下输出(例如当我输入 10 时)
不确定为什么会这样。我的代码附在下面。提前致谢!
ViewController:
class ViewController: UIViewController {
@IBOutlet weak var Screen: UILabel!
var firstNumber = Float()
var secondNumber = Float()
var result = Float()
var operation = ""
var isTypingNumber = false
@IBAction func Dot(sender: AnyObject) {
var dot = sender.currentTitle
Screen.text = Screen.text! + dot!!
}
@IBAction func Number(sender: AnyObject) {
var number = sender.currentTitle
if isTypingNumber == true {
Screen.text = Screen.text! + number!!;
} else {
Screen.text = number;
}
isTypingNumber = true
}
@IBAction func Operation(sender: AnyObject) {
operation = sender.currentTitle!!
isTypingNumber = false
firstNumber = (Screen.text! as NSString).floatValue
}
@IBAction func Equals(sender: AnyObject) {
secondNumber = (Screen.text! as NSString).floatValue
isTypingNumber = false
if operation == "+" {
result = firstNumber + secondNumber;
} else if operation == "-" {
result = firstNumber - secondNumber;
} else if operation == "x" {
result = firstNumber * secondNumber;
} else if operation == "/" {
result = firstNumber / secondNumber;
} else if operation == "%" {
result = (firstNumber * secondNumber) / 100
} else if operation == "√" {
result = sqrt(firstNumber)
}
Screen.text = "\(result)"
}
@IBAction func Clear(sender: AnyObject) {
firstNumber = 0
secondNumber = 0
result = 0
Screen.text = "\(0)"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Screen.text = 数字; <<<< 你在设置它之前没有解包这个可选的
因此输出是可选的(“0”)
@IBAction func Number(sender: AnyObject) {
var number = sender.currentTitle
if isTypingNumber == true {
Screen.text = Screen.text! + number!!;
} else {
Screen.text = number; <<<< you did not unwrap this optional before setting it
}
isTypingNumber = true
}
顺便说一句,不要使用 IUO 来解包但不在这个问题的范围内
你也不需要分号
我正在为 iOS 使用 swift 创建一个计算器应用程序。当我输入大于 9 的数字时,我得到以下输出(例如当我输入 10 时)
不确定为什么会这样。我的代码附在下面。提前致谢!
ViewController:
class ViewController: UIViewController {
@IBOutlet weak var Screen: UILabel!
var firstNumber = Float()
var secondNumber = Float()
var result = Float()
var operation = ""
var isTypingNumber = false
@IBAction func Dot(sender: AnyObject) {
var dot = sender.currentTitle
Screen.text = Screen.text! + dot!!
}
@IBAction func Number(sender: AnyObject) {
var number = sender.currentTitle
if isTypingNumber == true {
Screen.text = Screen.text! + number!!;
} else {
Screen.text = number;
}
isTypingNumber = true
}
@IBAction func Operation(sender: AnyObject) {
operation = sender.currentTitle!!
isTypingNumber = false
firstNumber = (Screen.text! as NSString).floatValue
}
@IBAction func Equals(sender: AnyObject) {
secondNumber = (Screen.text! as NSString).floatValue
isTypingNumber = false
if operation == "+" {
result = firstNumber + secondNumber;
} else if operation == "-" {
result = firstNumber - secondNumber;
} else if operation == "x" {
result = firstNumber * secondNumber;
} else if operation == "/" {
result = firstNumber / secondNumber;
} else if operation == "%" {
result = (firstNumber * secondNumber) / 100
} else if operation == "√" {
result = sqrt(firstNumber)
}
Screen.text = "\(result)"
}
@IBAction func Clear(sender: AnyObject) {
firstNumber = 0
secondNumber = 0
result = 0
Screen.text = "\(0)"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Screen.text = 数字; <<<< 你在设置它之前没有解包这个可选的
因此输出是可选的(“0”)
@IBAction func Number(sender: AnyObject) {
var number = sender.currentTitle
if isTypingNumber == true {
Screen.text = Screen.text! + number!!;
} else {
Screen.text = number; <<<< you did not unwrap this optional before setting it
}
isTypingNumber = true
}
顺便说一句,不要使用 IUO 来解包但不在这个问题的范围内 你也不需要分号