我在网上看斯坦福大学的iOS8课程,我有一个关于使用bool的目的的问题。
第一部分是关于创建计算器的。本部分的第一课是关于在计算器屏幕上显示用户按下的数字。讲师指出,为了显示没有附加到每个数字开头的零的数字,程序应该具有此布尔变量。
var userIsInTheMiddleOfTypyingANmuber: Bool = false然而,我真的不明白它在这个程序中是如何工作的,或者为什么讲师要这样使用它。有人能给我解释一下吗?为什么我的程序在按下键盘上的任意两个数字后崩溃?提前感谢!
我会添加图片,但我不能,因为我没有足够的名誉点。
使用boolean变量之前的显示屏幕将如下所示: 0567
使用布尔变量后的显示屏幕将如下所示: 567
import UIKit
class ViewController: UIViewController
{
@IBOutlet weak var display: UILabel!
var userIsInTheMiddleOfTypyingANmuber: Bool = false
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTypyingANmuber {
display.text = display.text! + digit
} else {
display.text = digit
userIsInTheMiddleOfTypyingANmuber = true
}
}发布于 2015-06-27 16:19:45
您没有在代码中处理零0的情况。这就是布尔值的用途。如果userIsInTheMiddleOfTyping为true,则表示您不在输入的开头。
在伪代码中仔细考虑:
if userIsTypingFirstDigit (that is, userIsInTheMiddleOfTyping == false)
if digitIsZero
add the zero to the input text
(but leave userIsInTheMiddleOfTyping as false)
else
replace the input text with the digit (which replaces any zeros typed)
set userIsInTheMiddleOfTyping to true
else
add the digit to the input text (including zeros)祝你编码愉快。
发布于 2015-06-27 16:32:30
1)关于
var userIsInTheMiddleOfTypyingANmuber: Bool = false 这里的userIsInTheMiddleOfTypyingANmuber (一个flag变量)是为了确保在每次开始输入数字时重置display标签。
例如,计算12345 + 789。
1)输入
1。->初始flag为false,因此display=1
2)继续输入2345 ->flag is true now,则display = 12345
3)输入+ -> Reset flag to false
4)输入7 ->由于flag为false,则display =7(即make 12345 gone,reset)。
否则,display将为123457(错误!)。
5)继续输入89 -> flag is true now,则display = 789
2)关于crash,因为没有相关的错误信息,所以很难说。但是,基本上,要确保所有Label Button控制器都与ViewController连接良好,否则将导致崩溃。
https://stackoverflow.com/questions/31086152
复制相似问题