2012-07-15 72 views
0

我想使多个if语句具有多个条件。如果我运行的代码,它工作正常,但它永远不会改变输出。我总是得到第二个语句> = 29.这是我的代码。多个if语句比较文本和整数

if (label.text <= @"30") 
    {label.text = @"Text";} 
else if (label.text >= @"29") 
    {label.text = @"Text";} 
else if (label.text >= @"19") 
    {label.text = @"Text";} 
else if (label.text >= @"10") 
    {label.text = @"Text";} 
else if (label.text = @"00") 
    {label.text = @"Text";} 

好,我已经改变了我的代码,但我仍然不工作有什么建议

 label.text = temporaryValue; 
    if ([label.text floatValue] <= 30) 
     {label.text = @"text1";} 
else if ([label.text floatValue] >= 29) 
     {label.text = @"text2";} 
else if ([label.text floatValue] >= 19) 
     {label.text = @"text3";} 
else if ([label.text floatValue] >= 10) 
     {label.text = @"text4";} 
else if ([label.text floatValue] == 0) 
     {label.text = @"text5";} 
+0

您是如何知道它总是给第二个?你每次都设置文字为相同的值 – 2012-07-15 12:47:56

回答

5

你不能比较喜欢这样的字符串的数值;这个操作执行指针比较,即。即它比较你在传递字符串实例(而不是随机)地址使用是这样的:

if ([label.text floatValue] >= 30.0) { 
} 

+0

确定那种工作,除了女巫上的按钮,我激活if语句我必须多次击中它,直到它得到正确的输出。你会知道该怎么办? – 2012-07-15 12:54:33

+0

@MattMühlemann这不是我的答案的问题 - 这是你的代码问题。你正在修改label.text的值,同时在if语句中检查它 - 你最好设置一个临时变量,然后用它来设置label.text **外部的if语句。 – 2012-07-15 12:57:47

+0

你在if语句之外设置label.text是什么意思?我的标签.text有一个值,根据该值,我想将label.text改为句子 – 2012-07-15 12:59:25

0

一旦你解决你的语法(如在这里其他的答案建议),你仍然有一个问题,因为一旦你处理数字比较,你的逻辑流程似乎有缺陷。考虑这个

if ([label.text floatValue] <= 30.0) 
    {label.text = @"Text";} 
else if ([label.text floatValue] >= 29.0) 
    {label.text = @"Text";} 

如果您的测试值大于30,就移动到下一否则,如果

else if ([label.text floatValue] >= 29.0) 

显然,这是大于29,因为它没能小于或等于30。因此,假设你的第一个条件是假的,你的所有其他条件都不会达到,第二个条件必须是真的。

+0

如果处理数值,他在修正后仍然会出现逻辑流问题。 – mathematician1975 2012-07-15 12:59:01

+1

是的(这就是为什么你没有得到一个downvote),但这不是他的问题的答案。 – 2012-07-15 13:00:41

+0

公平 - 但是当他让你更正时,我的回答将帮助他解决下一个问题。我确实指出'假设你修复你的语法' – mathematician1975 2012-07-15 13:01:57

1

使用> =或< =与NSString*会比较地址,而不是那些字符串的内容。如果要比较这个样子,你应该分析你的字符串转换为int,并使用它比较常见的整数比较:

int val = [label.text intValue]; 
if (val > 30) { 
    ... 
} 
else ... // more of your ifs