【问题标题】:how to make one string from several? Xcode如何从多个字符串中创建一个字符串? Xcode
【发布时间】:2012-03-12 01:51:31
【问题描述】:

我做了一些方法,从堆栈中获取数字和操作数,并以更用户友好的方式显示。问题在于 descriptionString 变量,当 topOfStack 为“+”时,它部分返回 null。我在下面显示一个日志。

+(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 做了例子,这是日志:

  • 2012-02-21 22:09:39.983 计算器[12536:f803] 堆栈 = ( 2、 6、 “+” )
  • 2012-02-21 22:09:39.983 计算器[12536:f803] 描述为(空)

为什么 descriptionString 为空?我在哪里做错了?谢谢

【问题讨论】:

  • 这是经典的计算机科学家庭作业......

标签: objective-c xcode string recursion stack


【解决方案1】:

行内:

descriptionString = [descriptionString stringByAppendingFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];

变量descriptionStringnil。将该行替换为以下内容。

descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];

【讨论】:

    【解决方案2】:

    我怀疑您没有为if 的另一个分支中的descriptionString 变量设置值,因此您将字符串附加到null。你可以设置变量,也可以使用[NSString stringWithFormat: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);
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多