2012-02-21 23 views
-1

我做了一些方法,它從堆棧中獲取數字和操作數,並以更加用戶友好的風格顯示它。問題在於descriptionString變量,它在topOfStack爲「+」時部分返回null。我在下面顯示一個日誌。如何讓幾個字符串中的一個? Xcode

+(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爲空?我犯了什麼錯誤?謝謝

+0

這是一個典型的計算機科學的家庭作業.... – DBD 2012-02-21 18:27:57

+0

的確是這樣,謝謝 – 2012-02-21 18:39:05

回答

1

在行:

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

變量descriptionStringnil。將該行替換爲以下內容。

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

感謝,這就是工作,像我想要的。 – 2012-02-21 18:38:06

0

我懷疑你沒有設置的另一分支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); 

    } 

} 
+0

感謝幫助過 – 2012-02-21 18:39:27

相關問題