我正在尝试使用简单的计算器应用学习编程。我的代码总是出错,即使我尝试过在这个平台上找到的所有内容,它也无法正常工作。愿有人帮助我吗?我正在使用Swift。
@IBOutlet weak var number1: UITextField!
@IBOutlet weak var number2: UITextField!
@IBOutlet weak var operatorSegment: UISegmentedControl!
@IBOutlet weak var resultLabel: UILabel!
@IBAction func calculateButton() {
let firstnumber = Int(number1)
let secondnumber = Int(number2)
switch operatorSegment.selectedSegmentIndex {
case 0:
resultLabel.text = firstnumber + secondnumber
case 1:
resultLabel.text = firstnumber - secondnumber
default:
resultLabel.text = "Error"
}
答案 0 :(得分:1)
.text
属性,因此您需要将Int(number1)
更改为Int(number1.text!)
,并将number2
更改为guard let
。if let
或Int
检查,以确保这些值不为零并且可以转换为整数。resultLabel.text
分配String
值,您需要先将结果转换为resultLabel.text = "\(firstnumber + secondnumber)"
,如下所示:calculateButton
考虑到所有这些因素,@IBAction func calculateButton() {
guard let firstnumber = Int(number1.text!) else {
// number1 can't be converted to an integer
resultLabel.text = "Error"
return
}
guard let secondnumber = Int(number2.text!) else {
// number2 can't be converted to an integer
resultLabel.text = "Error"
return
}
switch operatorSegment.selectedSegmentIndex {
case 0:
resultLabel.text = "\(firstnumber + secondnumber)"
case 1:
resultLabel.text = "\(firstnumber - secondnumber)"
default:
resultLabel.text = "Error"
}
}
函数的最终代码应如下所示:
<div class="row">
<!-- FOR ARTICLE IN ARTICLES -->
<div class="col-md-6">
<article>
<!-- content with variable height -->
</article>
</div>
<!-- ENDFOR -->
</div>
答案 1 :(得分:0)
我看到的一个问题是在switch语句中,您将Int直接传递到textfield的文本字符串中。
resultLabel.text = firstnumber + second number
首先需要在将ints传递到文本字段之前将其强制转换为字符串。之后switch语句看起来应该是这样的。
switch operatorSegment.selectedSegmentIndex {
case 0:
resultLabel.text = "\(firstnumber + second number)" //String
case 1:
resultLabel.text = "\(firstnumber - second number)" //String
default:
resultLabel.text = "Error"
}
答案 2 :(得分:0)
首先,我要假设Int(number1)
和Int(number2)
都返回有效Int
s。如果没有,那么你还有另一个问题。
主要问题是,您无法将Int
(或您的Int
的总和)转换为String
的预期类型resultLabel.text
期待。
// String = Int + Int <- Not allowed
resultLabel.text = firstnumber + secondnumber
您可以计算该值并对其进行插值,也可以只使用其中的计算实例化一个新的String对象。 e.g。
前#1:resultLabel.text = String(firstnumber + secondnumber)
前#2:resultLabel.text = "\(firstnumber + secondnumber)"