我正在尝试制作一个 RPN 计算器程序,并希望有一个标签来显示您输入的表达式。如果您输入 3,5,4,+,/,标签将显示 ((4+5) / 3)。我在实现这一点时遇到了麻烦。我正在使用一个 mutableArray,我称之为堆栈,它同时包含数字和操作数。另一个主要问题是传递的字符串不会是一个完整的字符串,而是每次用户输入一个值时都会传递它,因此程序必须在堆栈上只有一个或两个项目的情况下连续运行。这是代码。
+ (NSString *)descriptionOfProgram:(id)program
{
NSMutableArray *stack;
if([NSArray isKindOfClass:[NSArray class]])
stack = [program mutableCopy];
NSUInteger count = [stack count];
NSString* symbol;
NSMutableString *result;
[result appendString:@"("];
for( NSUInteger i=0; i<count; i++){
if ([[stack lastObject] isEqualToString:@"+"] || [[stack lastObject] isEqualToString:@"-"] || [[stack lastObject] isEqualToString:@"/"] || [[stack lastObject] isEqualToString:@"*"] || [[stack lastObject] isEqualToString:@"sin"] || [[stack lastObject] isEqualToString:@"cos"] )
{
symbol = [stack lastObject];
[stack removeLastObject];
}
else
{
if( [stack lastObject] != nil){
[result appendString:[stack lastObject]];
[stack removeLastObject]; }
// [result stringByAppendingString:symbol];
if( [stack lastObject]){
[result appendString:[stack lastObject]];
[stack removeLastObject];}
[result appendString:@")"];
[stack addObject:result];
}
}
return [stack lastObject];
}