Objective c 如何从几个字符串中提取一个字符串?Xcode
我制作了一些方法,从堆栈中提取数字和操作数,并以更友好的方式显示。问题在于descriptionString变量,当topOfStack为“+”时,它部分返回null。我在下面显示一个日志Objective c 如何从几个字符串中提取一个字符串?Xcode,objective-c,xcode,string,recursion,stack,Objective C,Xcode,String,Recursion,Stack,我制作了一些方法,从堆栈中提取数字和操作数,并以更友好的方式显示。问题在于descriptionString变量,当topOfStack为“+”时,它部分返回null。我在下面显示一个日志 +(NSString *)descriptionOfTopOfStack:(NSMutableArray *)stack { NSString *descriptionString; id topOfStack = [stack lastObject]; NSString *seco
+(NSString *)descriptionOfTopOfStack:(NSMutableArray *)stack
{
NSString *descriptionString;
id topOfStack = [stack lastObject];
NSString *secondInStack;
NSString *thirdInStack;
if (topOfStack)
[stack removeLastObject];
if ([topOfStack isKindOfClass:[NSNumber class]]) {
descriptionString = [topOfStack stringValue];
}
else if([topOfStack isKindOfClass:[NSString class]]){
if(([topOfStack isEqualToString:@"+"]) || ([topOfStack isEqualToString:@"—"])){
secondInStack = [self descriptionOfTopOfStack:stack];
thirdInStack = [self descriptionOfTopOfStack:stack];
descriptionString = [descriptionString stringByAppendingFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];
NSLog(@"description is %@",descriptionString);
}
}
return descriptionString;
}
我用2+6做了一个例子,这是log:
- 2012-02-21 22:09:39.983计算器[12536:f803]堆栈=( 2. 6. "+" )
- 2012-02-21 22:09:39.983计算器[12536:f803]说明为空
为什么descriptionString为空?我哪里出错了?谢谢我怀疑您没有在
if
的另一个分支中设置descriptionString
变量的值,因此您将字符串附加到null
。您可以设置变量,也可以使用[nsstringwithformat:format]
:
if ([topOfStack isKindOfClass:[NSNumber class]]) {
descriptionString = [topOfStack stringValue];
}
else if([topOfStack isKindOfClass:[NSString class]]){
if(([topOfStack isEqualToString:@"+"]) || ([topOfStack isEqualToString:@"—"])){
secondInStack = [self descriptionOfTopOfStack:stack];
thirdInStack = [self descriptionOfTopOfStack:stack];
descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];
NSLog(@"description is %@",descriptionString);
}
}
行中:
descriptionString = [descriptionString stringByAppendingFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];
变量descriptionString
为nil
。将该行替换为以下内容
descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];
这是一个经典的计算机科学作业。。。。