iOS阵列问题的基本计算器

时间:2014-02-12 22:10:25

标签: ios objective-c

我正在尝试为iOS制作一个简单的计算器应用程序。到目前为止,程序应该采用浮点值(作为字符串)并将其存储在数组中。然后取一个运算符(存储为字符串)并将其存储在下一个数组点,然后另一个值...我遇到的问题是当我遍历数组以检查值是否输入正确我有值替换为最新输入

即。我输了6 + 9我得到9 + 9或1 + 2-3我得到3 + 3-3等......

我无法弄清楚我做错了什么,请帮忙。

这是我的代码。

// BasicCalculatorViewController.m//


- (IBAction)numberButtonTouched:(UIButton *)sender
{
    UIButton *currentButton = (UIButton *)sender;
    NSString *buttonString = [[NSString alloc] initWithString:[currentButton currentTitle]];

    // ONLY ALLOWS ONE DECIMAL PLACE PERVALUE //
    if ([buttonString isEqualToString:@"."]) {
        NSRange range = [self.currentValueString rangeOfString:@"."];
        if (range.location == NSNotFound) {
            [self.currentValueString appendString:buttonString];
        }
    } else {
        [self.currentValueString appendString:buttonString];
    }

    [self.basicCalculator setNumberValue:self.currentValueString];
    [self updateUI];
}


- (IBAction)mainOperatorButtonTouched:(UIButton *)sender
{
    [self.currentValueString setString:@""];
    UIButton *currentButton = (UIButton *)sender;
    NSString *buttonString = [[NSString alloc] initWithString:[currentButton currentTitle]];

    [self.basicCalculator determineOperatorButtonPressed:buttonString];
    [self updateUI];
}

- (void) updateUI
{
    self.equationLabel.text = [self.basicCalculator getContentsOfEquation];
    self.resultsLabel.text = self.basicCalculator.total;
}



// BasicCalculator.m //


- (void) setNumberValue:(NSString *)stringValue
{
    NSLog(@"StringValue = %@", stringValue);
    self.equationArray[self.equationArrayCounter] = stringValue;
    self.selectedNumber = [stringValue floatValue];

    for (int i = 0; i < [self.equationArray count]; i++) {
        NSLog(@"equationArray %d: %@", i,self.equationArray[i]);

    }
    NSLog(@"\n");

}


- (void) determineOperatorButtonPressed:(NSString *)buttonLabel
{
    self.equationArrayCounter ++;

    if ([buttonLabel isEqualToString:@"+"]) [self.equationArray addObject:@"+"];
    if ([buttonLabel isEqualToString:@"−"]) [self.equationArray addObject:@"−"];
    if ([buttonLabel isEqualToString:@"×"]) [self.equationArray addObject:@"×"];
    if ([buttonLabel isEqualToString:@"÷"]) [self.equationArray addObject:@"÷"];
    if ([buttonLabel isEqualToString:@"="]) [self.equationArray addObject:@"="];

    self.equationArrayCounter++;
}


-(NSMutableString *)getContentsOfEquation
{
    NSMutableString *contents = [[NSMutableString alloc] init];
    for (NSString *value in self.equationArray) {
        [contents appendString:value];
    }
    return contents;
}




@end

1 个答案:

答案 0 :(得分:0)

REPLACE self.equationArray [self.equationArrayCounter] = stringValue; WITH [equationArray addObject:stringValue]; IN - (void)setNumberValue:(NSString *)stringValue

也许您尝试将对象传递到的索引已经被前一个条目占用。