如果和否则如果声明
我想知道为什么这段代码不起作用。这是一个计算器:) 我需要符号(香蕉)被计算器识别,并根据用户输入的内容使用+, - 。如果和否则如果声明
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]]];
}
}
这里是你怎么想这样做:
if ([banana isEqualToString:@"-"])
{
[calc minus];
}
else if ([banana isEqualToString:@"+"])
{
[calc add];
}
我真的爱你只是说 2012-07-24 04:06:42
嘿,为什么? :P你知道我还是只喜欢我的回答? :P – 2012-07-24 04:09:18
我喜欢你的答案,完美的作品:)并且非常快速的回答。非常感谢你 – 2012-07-24 04:17:10
要判断的NSString是否是平等的,你必须使用[@"AAAA" isEqualToString : @"BBBB"]
。您不能使用==
,因为它们不在内存的相同地址中。
@DavidMurray你不能像这样编辑它“[@”AAAA“isEqualToString:@”BBBB“]”。因为我的AAAA和BBBB是NSString *。 – 2012-07-25 08:55:00
=
被赋值。它与比较完全没有关系。
==
正在比较2个表达式并查看它们是否相等。这可用于比较整数类型(例如enum
,char
,int
,short
,long
,long long
,BOOL
)或引用(检查2个指针是否指向同一对象)。请注意,2个指针可指向2个不同的对象,其中包含相同的值,但==
会将它们作为不同的对象进行比较。 (浮点类型如float
和double
需要稍微不同的方法来比较相等性)。
至于抢占=
和==
之间的混淆,对平等==
测试方法,有人把在左手侧的值,并且在右手侧(例如2 == variable
)的变量中。如果它们发生错误==
到=
,编译器会发出抱怨。
如果要比较2个对象的内容,在本例中为NSString
,则应搜索isEquals
函数类型。对于NSString
,如果要比较2个字符串是否具有相同内容,则应使用isEqualToString
。
至少你需要使用'=='来测试相等性。 – 2012-07-24 03:55:38
您需要isEquals(或类似的东西)函数。您目前正在将'@“+”'分配给香蕉。 – nhahtdh 2012-07-24 03:56:46
请注意,编译器会警告您使用'=',但是您放入了一个双括号,明确地关闭了编译器警告。要非常小心以这种方式关闭编译器警告。 – 2012-07-24 04:03:36