我正在开发一个计算器应用程序,该应用程序会在您键入时输出答案,而不是点击等于按钮。到目前为止,一切正常,除非您在已经计算的数字上添加(或 -,/,*)。例如,如果我做 10 + 15 + 9,它会给我 169 而不是正确答案 (34)。我想我知道为什么会发生这种情况,但我真的不确定如何解决它。
这是我的代码:
if (answer == NO) {
saved1 = saved1 * 10 + digit;
if ([self.screen.text isEqual: @"0"] || operationClear == YES) {
self.screen.text = number;
operationClear = NO;
}else{
self.screen.text = [NSString stringWithFormat:@"%@%@", self.screen.text, number];
}
}else{
saved2 = saved2 * 10 + digit;
if (plus == YES) {
answerr = saved1 + saved2;
//saved1 = answerr;
// saved2 = 0;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
self.screen.text = [formatter stringFromNumber:[NSNumber numberWithDouble:answerr]];
}
}
}
我相信问题是当你第二次点击加号时,它只是在saved2
末尾加了 9 .为了解决这个问题,我试图让saved1
等于答案,saved2
等于零,这不起作用。有什么想法吗?如果我做错了,请告诉我,我是iOS开发的新手,并希望以最有效的方式做到这一点。谢谢。
因此,从您的代码来看,您正在使用数学来显示用户按下新数字后的数字。
例如,如果显示"1"并且用户按 2,则通过执行 1 * 10 + 2 得到"12"
也许更好的方法是处理字符串,例如,当用户输入数字时
例如,如果显示"1"并且用户按"2",则取"2"字符串并将其添加到"1"字符串中:
NSString * displayString = calculatorDisplay.text; // display
NSString * userInputString = @"2";
calculatorDisplay.text = [displayString stringByAppendingString:userInputString];
然后,当您需要数字时,请使用以下命令将其转换为数字:
- (NSNumber *)numberFromString:(NSString *)string {
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
return [f numberFromString:string];
}
我知道这会改变一些事情,但我认为它会更加一致。 它还允许用户轻松输入小数等内容。