【发布时间】:2017-11-19 22:24:22
【问题描述】:
对于 Uni 的一个项目,我决定制作一个二进制计算器应用程序来学习更多关于编码的知识。
我已经完成了一个普通的计算器应用程序(但它只有两个数字:1 ; 0)但我不知道如何让计算器正常工作(1010 + 1101 = 10111 不是2111)。感谢所有帮助。
var numberEkraanil:Double = 0;
var eelmineNumber:Double = 0;
var tehesmatemaatikat = false
var operation = 0;
@IBOutlet weak var label: UILabel!
@IBAction func Numbers(_ sender: UIButton) {
if tehesmatemaatikat == true
{
label.text = String(sender.tag-1)
numberEkraanil = Double(label.text!)!
tehesmatemaatikat = false
}
else
{
label.text = label.text! + String(sender.tag-1)
numberEkraanil = Double(label.text!)!
}
}
@IBAction func nupud(_ sender: UIButton) {
if label.text != "" && sender.tag != 6 && sender.tag != 8
{
eelmineNumber = Double(label.text!)!
if sender.tag == 3 //Liitmine
{
label.text = "+";
}
else if sender.tag == 4 //Lahutamine
{
label.text = "-";
}
else if sender.tag == 5 // Korrutamine
{
label.text = "x";
}
else if sender.tag == 7 // Jagamine
{
label.text = "÷";
}
operation = sender.tag
tehesmatemaatikat = true;
}
else if sender.tag == 8
{
if operation == 3
{
label.text = String(eelmineNumber + numberEkraanil)
}
else if operation == 4
{
label.text = String(eelmineNumber - numberEkraanil)
}
else if operation == 5
{
label.text = String(eelmineNumber * numberEkraanil)
}
else if operation == 7
{
label.text = String(eelmineNumber / numberEkraanil)
}
}
else if sender.tag == 6
{
label.text = ""
eelmineNumber = 0;
numberEkraanil = 0;
operation = 0;
}
【问题讨论】:
-
您需要将文本输入转换为二进制数字,并将结果的二进制转换为字符串。我建议阅读基本转换。 (提示:查看二进制位移运算符
<<和>>以及按位与运算符&&。) -
任何时候你有一个很长的
if <condition> then <statement> else if <condition> then <statement> else if <condition>构造,你应该考虑使用不同的方法,比如 switch 语句。 -
另外,标签并不是处理不同按钮的好方法。我建议将插座连接到每个按钮,然后比较发件人以查看它匹配的插座:
switch sender { case plusButton: <your_code> ; case minusButton: <your_code> }
标签: ios swift binary calculator