答案动态回答的计算器问题



我正在开发一个计算器应用程序,该应用程序会在您键入时输出答案,而不是点击等于按钮。到目前为止,一切正常,除非您在已经计算的数字上添加(或 -,/,*)。例如,如果我做 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];
}

我知道这会改变一些事情,但我认为它会更加一致。 它还允许用户轻松输入小数等内容。

最新更新