RPN计算器分配2,descriptionOfProgram

时间:2012-07-20 14:13:02

标签: objective-c ios calculator

到目前为止,我已经为这项任务工作了6天,我特别感到沮丧,因为我没有更多的想法或方法去做任务所需要的。

我正在描述程序部分(我已经开始使用它,还没有完成其余的任务部分),我很担心该怎么做。这是我目前的实施。

+(NSString *)descriptionOfProgram:(id)program
{
if (![self isValidProgram:program]) 
    return @"Invalid program!";
NSMutableArray *stack = [program mutableCopy];
return [self descriptionHelper:stack];
}
+(NSString *)descriptionHelper:(NSMutableArray *)stack
{
NSString *result;
id topOfStack = [stack lastObject];
if (topOfStack) [stack removeLastObject];
if ([topOfStack isKindOfClass:[NSNumber class]]) 
{
   result = [topOfStack stringValue];
}
else if ([topOfStack isKindOfClass:[NSString class]])
{
    result = [NSString stringWithFormat:@"(%@ %@ %@)",[self descriptionHelper:stack],topOfStack,[self descriptionHelper:stack]];
    return result = [self bracketHandler:result];
}
return result;
}
+(NSString *)bracketHandler:(NSString *)stringWithBrackets
{
int lengthOfString = [stringWithBrackets length];
NSString *newString = stringWithBrackets;
if (lengthOfString < 8)
{
    newString = [newString stringByReplacingOccurrencesOfString:@"(" withString:@""];
    newString = [newString stringByReplacingOccurrencesOfString:@")" withString:@""];
}
else 
{
    <#statements#>
}
return newString;
}

我被困在这一点上,我知道我当前的实现看起来很糟糕,但我想要一个小的指导,在哪里移动,寻找什么,如何实际完成这个任务,并显示我的可读描述用最少的括号和逻辑方式编程所有时间。

我真的很感激只是朝着正确的方向小推,我迷失了。

1 个答案:

答案 0 :(得分:0)

我不确定,如果我明白你的问题是什么。 如果您很难确定字符串所代表的数据类型,您可能会尝试创建字符集(NSCharacterSet* yourSet = [NSCharacterSet characterSetWithCharactersInString:yourString])并进行测试,如果此集是标准集的子集提供,例如:

if ([[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet: yourSet]) { 
   /* integer number */
} else if ([[NSCharacterSet characterSetWithCharactersInString:@"*/"] isSupersetOfSet: yourSet]) {
   /* multiplication or division */
} else ...

这可能不是最优雅的解决方案,但它很容易应用并且应该有效。