If和Else if Statement

时间:2012-07-24 03:54:18

标签: objective-c ios calculator if-statement

我想知道为什么这段代码不起作用。这是一个计算器:) 我需要计算器识别符号(香蕉),并根据用户的输入使用+, -

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]]];  
}
}

3 个答案:

答案 0 :(得分:2)

要判断NSString是否相等,您必须使用[@"AAAA" isEqualToString : @"BBBB"]。您不能使用==,因为它们不在内存的同一地址中。

答案 1 :(得分:1)

以下是您要执行此操作的方式:

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

答案 2 :(得分:1)

=是作业。它与比较完全无关。

==正在比较两个表达式,看看它们是否相等。这可用于比较整数类型(例如enumcharintshortlonglong long,{{1 }}或引用(检查2个指针是否指向同一个对象)。请注意,2个指针可以指向2个不同的对象,其中包含相同的值,但BOOL会将它们作为不同的值进行比较。 (==float等浮点类型需要稍微不同的方法来比较相等性。

作为一种抢占double=之间混淆的方法,对于==的等式测试,有些人将值放在左侧,而变量放在右侧方(例如==)。如果他们错误地将2 == variable错误地输入到==,编译器会抱怨。

如果要比较2个对象的内容,在本例中为=,则应搜索NSString类型的函数。对于isEquals,如果要比较2个字符串是否具有相同内容,则应使用NSString