2012-07-24 73 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