2012-07-24 78 views
0

我想知道爲什麼這段代碼不起作用。這是一個計算器:) 我需要符號(香蕉)被計算器識別,並根據用戶輸入的內容使用+, - 。如果和否則如果聲明

NSString *list = [Sum_TextField text]; 
NSArray *listItemsArray = [list componentsSeparatedByString:@" "]; 
int batman = [[listItemsArray objectAtIndex: 0] intValue]; 
NSString *banana = [listItemsArray objectAtIndex: 1]; 
int joker = [[listItemsArray objectAtIndex: 2] intValue]; 
{ 

    Calculator* calc = [[Calculator alloc] init]; 
    [calc setNum1:batman]; 
    [calc setNum2:joker]; 
    if ((banana = @"-")) 
    { 
     [calc minus]; 
    } 
    else if ((banana = @"+")) 
    { 
     [calc add]; 
    } 

    [Answer_TextField setText:[NSString stringWithFormat:@"%d", [calc answer]]]; 
} 
} 
+0

至少你需要使用'=='來測試相等性。 – 2012-07-24 03:55:38

+0

您需要isEquals(或類似的東西)函數。您目前正在將'@「+」'分配給香蕉。 – nhahtdh 2012-07-24 03:56:46

+0

請注意,編譯器會警告您使用'=',但是您放入了一個雙括號,明確地關閉了編譯器警告。要非常小心以這種方式關閉編譯器警告。 – 2012-07-24 04:03:36

回答

1

這裏是你怎麼想這樣做:

if ([banana isEqualToString:@"-"]) 
{ 
    [calc minus]; 
} 
else if ([banana isEqualToString:@"+"]) 
{ 
    [calc add]; 
} 
+0

我真的愛你只是說<3 – 2012-07-24 04:06:42

+0

嘿,爲什麼? :P你知道我還是隻喜歡我的回答? :P – 2012-07-24 04:09:18

+0

我喜歡你的答案,完美的作品:)並且非常快速的回答。非常感謝你 – 2012-07-24 04:17:10

2

要判斷的NSString是否是平等的,你必須使用[@"AAAA" isEqualToString : @"BBBB"]。您不能使用==,因爲它們不在內存的相同地址中。

+0

@DavidMurray你不能像這樣編輯它「[@」AAAA「isEqualToString:@」BBBB「]」。因爲我的AAAA和BBBB是NSString *。 – 2012-07-25 08:55:00

1

=被賦值。它與比較完全沒有關係。

==正在比較2個表達式並查看它們是否相等。這可用於比較整數類型(例如enum,char,int,short,long,long long,BOOL)或引用(檢查2個指針是否指向同一對象)。請注意,2個指針可指向2個不同的對象,其中包含相同的值,但==會將它們作爲不同的對象進行比較。 (浮點類型如floatdouble需要稍微不同的方法來比較相等性)。

至於搶佔===之間的混淆,對平等==測試方法,有人把在左手側的值,並且在右手側(例如2 == variable)的變量中。如果它們發生錯誤===,編譯器會發出抱怨。

如果要比較2個對象的內容,在本例中爲NSString,則應搜索isEquals函數類型。對於NSString,如果要比較2個字符串是否具有相同內容,則應使用isEqualToString