数字变量。如果条件不提高

时间:2015-03-19 14:42:17

标签: objective-c ios8

我想选择一个数字范围来更改图像视图的颜色背景。

我用我的iPhone麦克风取hz的值,这个值是转换为字符串,值不固定。
我想从18000.000f到1899.999f中选择一个数字。

这是我的代码

if (maxHZ = 18000.000f) {
   Image.backgroundColor = [UIColor blackColor];
} else if(maxHZ >= 17999.999f ) {
    Image.backgroundColor = [UIColor redColor];
} else if(maxHZ >= 18999.999f) {
    Image.backgroundColor = [UIColor yellowColor];
}

2 个答案:

答案 0 :(得分:5)

我已将您的代码更正为正确检查,因为您正在使用else if,它不会进入最后一个语句,因为如果最后一个为真,则第二个也是如此。

if (maxHZ == 18000.000f) {
   Image.backgroundColor = [UIColor blackColor];
} else if(maxHZ >= 17999.999f && maxHZ < 18999.999f ) {
    Image.backgroundColor = [UIColor redColor];
} else if(maxHZ >= 18999.999f) {
    Image.backgroundColor = [UIColor yellowColor];
}

正如评论中所说,你应该删除第一个声明。它有0.000000001%的机会进入。

if(maxHZ >= 18999.999f) {
    Image.backgroundColor = [UIColor redColor];
} else {
    Image.backgroundColor = [UIColor yellowColor];
}

或如果他想要黑色,如果它不在那两个范围的以太中:

if(maxHZ >= 18999.999f) {
    Image.backgroundColor = [UIColor redColor];
} else if(maxHZ >= 17999.999f) {
    Image.backgroundColor = [UIColor yellowColor];
} else {
    Image.backgroundColor = [UIColor blackColor];
}

答案 1 :(得分:1)

逻辑上,我想,你可能会寻找这样的东西,我猜:

if (maxHZ >= 18999.999f) {
    Image.backgroundColor = [UIColor yellowColor];
} else if (maxHZ == 18000.000f) {
    Image.backgroundColor = [UIColor blackColor];
} else if (maxHZ >= 17999.999f) {
    Image.backgroundColor = [UIColor redColor];
} else {
    /* do something here, otherwise you would be left without explicit color */
}

(我个人不知道你会看到多少次黑色,因为18000.017999.999之间的间隔是千分之一,你的输入可能没那么准确微不足道的差异。)