簡體   English   中英

多個if語句比較文本和整數

[英]Multiple if statements comparing text and integers

我正在嘗試使用多個條件創建多個if語句。 如果我運行代碼,它可以正常工作,但它永遠不會更改輸出。 我總是得到第二條語句> =29。這是我的代碼。

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

您不能像這樣比較字符串的數值。 此操作執行指針比較,即,它比較您傳入的字符串實例的(而不是隨機的)地址。請使用類似以下內容的方法:

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

等等

NSString*使用> =或<=會比較地址,而不是那些字符串的內容。 如果要進行這樣的比較,則應將字符串解析為一個int ,然后使用通用整數比較對其進行比較:

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

一旦修復了語法(如此處其他答案所示),您仍然會遇到問題,因為一旦處理數字比較,您的邏輯流程似乎就會出現問題。 考慮一下

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。因此,假設您的第一個條件為假,則第二個必須為真,因此永遠不會達到您的所有其他條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM