我正在开发一个计算器应用程序,可以在您键入时输出答案,而不是点击等于按钮。到目前为止一切正常,除非你在已经计算过的数字上添加(或 - ,/,*)。例如,如果我做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开发的新手,并希望以最有效的方式实现这一目标。
感谢。
答案 0 :(得分:1)
因此,从您的代码中可以看出,在用户按下新数字后,您正在使用数学来显示数字。
例如,如果显示“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];
}
我知道这会改变一些事情,但我认为它会更加一致。它还允许用户轻松输入小数等内容。