Swift 中的设计计算器 - 如何添加单个“.”什么时候需要输入浮点数?
Designing Calculator in Swift - How to add single "." when require to enter floating point number?
我正在 Swift 中为 IOS8 开发计算器。当按下 [0-9] 按钮时。它显示正确。运算符 [+ - / *] 也能成功运行。
我需要添加“.”按钮,因此用户可以输入浮点数 19.2、21.67、40.6725 - 如何编写代码以便“.”只出现一次,而不是 19.3.4?(在计算器中不是合法的浮点数)
我发现 rangeOfString(subString: String) 可能很有用。它 returns 一个可选的。如果在接收器中找不到传递的 String 参数,则它 returns nil
@IBOutlet weak var display: UILabel!
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if (digit == "․") {
if (display.text.rangeOfString("﹒") != nil) {
//DO Something Here
} else{
}
你已经完成了 99%。您只想添加“。”如果您还没有显示器的话。我建议改为寻找 == nil
寻找 != nil
.
if (digit == "․") {
if (display.text.rangeOfString(".") == nil) {
// append "." to the display text because we
// haven't see one yet
display.text = display.text + "."
} else {
// do nothing, we already have a "." in the
// display
}
您可以省略 else
子句。我把它留在这里是为了解释。
Vacawana 的回答没有成功,因为语法已经过时了。我想到了更简单的解决方案,
let dupDecimal = decimalDupCheck(inputDigit: digit, stringToCheck: display.text)
if userIsInTheMiddleOfTyping {
if !dupDecimal {
display.text = display.text! + digit
}
} else {
display.text = digit == "." ? "0" + digit : digit
userIsInTheMiddleOfTyping = true
}
}
func decimalDupCheck(inputDigit digit: String, stringToCheck text: String?) -> Bool {
if userIsInTheMiddleOfTyping {
return digit == "." && text?.contains(".") == true
} else {
return false
}
基本上你接受一个 BOOL
函数,检查 (".") 的任何重复,并根据其结果执行下一个条件括号。
我正在 Swift 中为 IOS8 开发计算器。当按下 [0-9] 按钮时。它显示正确。运算符 [+ - / *] 也能成功运行。
我需要添加“.”按钮,因此用户可以输入浮点数 19.2、21.67、40.6725 - 如何编写代码以便“.”只出现一次,而不是 19.3.4?(在计算器中不是合法的浮点数)
我发现 rangeOfString(subString: String) 可能很有用。它 returns 一个可选的。如果在接收器中找不到传递的 String 参数,则它 returns nil
@IBOutlet weak var display: UILabel!
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if (digit == "․") {
if (display.text.rangeOfString("﹒") != nil) {
//DO Something Here
} else{
}
你已经完成了 99%。您只想添加“。”如果您还没有显示器的话。我建议改为寻找 == nil
寻找 != nil
.
if (digit == "․") {
if (display.text.rangeOfString(".") == nil) {
// append "." to the display text because we
// haven't see one yet
display.text = display.text + "."
} else {
// do nothing, we already have a "." in the
// display
}
您可以省略 else
子句。我把它留在这里是为了解释。
Vacawana 的回答没有成功,因为语法已经过时了。我想到了更简单的解决方案,
let dupDecimal = decimalDupCheck(inputDigit: digit, stringToCheck: display.text)
if userIsInTheMiddleOfTyping {
if !dupDecimal {
display.text = display.text! + digit
}
} else {
display.text = digit == "." ? "0" + digit : digit
userIsInTheMiddleOfTyping = true
}
}
func decimalDupCheck(inputDigit digit: String, stringToCheck text: String?) -> Bool {
if userIsInTheMiddleOfTyping {
return digit == "." && text?.contains(".") == true
} else {
return false
}
基本上你接受一个 BOOL
函数,检查 (".") 的任何重复,并根据其结果执行下一个条件括号。