0
#import "Calculator.h"
@implementation Calculator
- (long) calcNumbers:(NSString *)myOperator andNumberOne:(NSString *)numberOne andNumberTwo:(NSString *)numberTwo {
long result;
if ([myOperator isEqualToString:@"+"]){
result = [numberOne integerValue] + [numberTwo integerValue];
} else if ([myOperator isEqualToString:@"-"]) {
result = [numberOne integerValue] - [numberTwo integerValue];
} else if ([myOperator isEqualToString:@"*"]){
result = [numberOne integerValue] * [numberTwo integerValue];
} else if ([myOperator isEqualToString:@"/"]) {
result = [numberOne integerValue]/[numberTwo integerValue];
} else {
result = [numberOne integerValue] % [numberTwo integerValue];
}
return result;
}
- (long) postFix:(NSMutableArray *)symbols
{
NSMutableArray * newSymbols = [[NSMutableArray alloc]init];
NSString * operatorSigns = @"*/%";
long result = 0;
for (int i = 0; i < symbols.count; i++){
// operand
if (i%2 == 0){
[newSymbols addObject:symbols[i]];
} else { // operator
if ([operatorSigns containsString:symbols[i]]){
result = [self calcNumbers:symbols[i] andNumberOne:symbols[i-1] andNumberTwo:symbols[i+1]];
[newSymbols insertObject:[NSNumber numberWithLong:result] atIndex:i-1];
i = i + 1;
} else {
[newSymbols addObject:symbols[i]];
}
}
}
for (int i = 0; i < newSymbols.count; i++){
if (i%2 == 1){
result = [self calcNumbers:newSymbols[i] andNumberOne:newSymbols[i-1] andNumberTwo:newSymbols[i+1]];
}
}
return result;
}
@end
这是我的课。我正在尝试在命令行中运行RPN计算器。但在calcNumbers方法中,存在EXC_Arithmetic错误。我认为星号是作为(所有)unix_command工作的。我怎样才能解决这个问题?在此先感谢EXC_ARITHMETIC错误目标C
这个错误可能意味着你除以零('/'或'%'操作符)。你必须解决这个问题。 – Sulthan
请添加'postFix'函数的输入。 – Sulthan