objective-c - objective-c : calculator app - currentNumber = currentNumber * 10 + digit;

标签 objective-c xcode calculator

我正在阅读《Objective-C 编程》第四版。作者:史蒂芬·G·科尚 (Stephen G. Kochan)书中有一个为 iPhone 创建计算器应用程序的示例代码。我理解代码,至少90%。 - 有一个 Fraction 类,它具有存储分数对象的方法,并描述如何执行不同的基本分数算术运算 - 除此之外,还有一个计算器类,它根据用户是否尝试求和、除法等来运行 Fraction 类中的适当方法。

当用户在界面中按下数字时, View Controller 具有以下方法:

-(IBAction)clickDigit:(UIButton *)sender {
int digit = sender.tag;     //sender or the argument inthis case is  the button

[self processDigit:digit];
}

如您所见,现在调用此方法:

-(void) processDigit:(int)digit {
currentNumber = currentNumber * 10 + digit;

[displayString appendString:
 [NSString stringWithFormat:@"%i", digit]];
display.text = displayString;

}

我唯一的问题(可能也是答案最简单的问题)是:为什么 currentNumber 总是乘以 10?当编译器进入上述方法时,currentNumber 的值始终为 0(我使用 XCode 中的调试器验证了这一点),所以我不明白为什么我们甚至必须将其乘以 10。我确实删除了该乘法,结果不正确,我只是不明白为什么。

谢谢

最佳答案

也许思考这个问题的最好方法是举个例子。

假设用户按顺序单击了以下数字:1、2。然后,假设代码正常工作,currentNumber 的数值应为 12。

现在想象用户接下来点击“3”。现在您希望该值为 123。您可以通过将先前的值 (12) 乘以 10,然后加上 3 来获得此值。如果他们随后单击“4”,则该值应变为 1,234,这是通过 10 实现的* 123 + 4。依此类推。

关于objective-c - objective-c : calculator app - currentNumber = currentNumber * 10 + digit;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279483/

相关文章:

ios - 我只想在 coredata objective-c 中保存时间而不是日期和时间

ios - UITableView 和 UIView 手势冲突

ios - 在 'tag' 类型的对象上找不到属性 '_strong id'

ios - (模拟器 iPhone 4s 不可用。)验证期间

javascript - 当所有变量和输入都是数字时,为什么我得到 NaN?

java - 我的零钱计算器有缺陷?

ios - 设置包含动态单元格高度的 UITableView 的高度

ios - 查看标签 : returns nil on UITableViewCell only first time

xcode - Xcode的设置第四列的含义是什么?

python - 在 python 中添加字符串(作为 base 12 数字的表示)和整数/其他字符串