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

时间:2014-03-02 15:40:10

标签: ios iphone objective-c calculator

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

答案 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];
}

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