2013-02-12 25 views
0

我正在使用身體質量指數和我很好奇爲什麼我的「範圍」系統只是將標籤設置爲一個值。有沒有更好的方法來設置這將工作得更好?爲什麼我的整數範圍不起作用?

int bmiInt = currentBMI; 
if (0<=bmiInt <= 18.5) { 
    weightStatus.text = @"Status: Underweight"; 
} 
if (18.6 <= bmiInt <= 24.9) { 
    weightStatus.text = @"Status: Normal weight"; 
} 
if (25 <= bmiInt <= 29.9) { 
    weightStatus.text = @"Status: Overweight"; 
} 
if (bmiInt >= 30) { 
    weightStatus.text = @"Status: Obese"; 
} 

出於某種原因weightStatus.text總是等於@「狀態增持」即使bmiInt不是範圍之內。爲什麼?

+1

沒寫過的Xcode,但大多數語言不允許鏈接運營商一樣,不..它應該是'如果((0 <= bmiInt)&&(bmiInt <= 18.5))'? – 2013-02-12 22:14:40

+0

謝謝!完美工作! – 2013-02-12 22:23:10

回答

1

0 <= bmiInt <= 18.5不會做你認爲它的作用。比較運算符的返回值是01,表示真假。這個表達式可以被重寫爲(0 <= bmiInt) <= 18.5,這意味着在評估第一個比較0 <= bmiInt之後,您將以0 <= 18.51 <= 18.5結尾,這兩個值均通過條件評估爲1

對於您的前3個條件,這將是真實的,這意味着除非bmiInt >= 30評估爲真,那麼您的標籤總是會顯示@"Status: Overweight"

你想改寫這個像

if (0 <= bmiInt && bmiInt <= 18.5) { 
    ... 
}