2012-07-15 39 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