[英]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.