2015-11-02 88 views
-2

我试图根据随机生成的温度设置价格。但是,它只返回前两个选项$ 0.50和$ 0.55。我很确定这与陈述有关,但我不完全确定它为什么不起作用。If-else声明不起作用

public static double GetPrice() 
{ 
    if (temp < 50) 
    { 
     price = 0.50; 
    } 
    else if (temp >= 50) 
    { 
     price = 0.55; 
    } 
    else if (temp >= 61 && temp <= 65) 
    { 
     price = 0.60; 
    } 
    else if (temp >= 66 && temp <= 70) 
    { 
     price = 0.65; 
    } 
    else if (temp >= 71 && temp <= 75) 
    { 
     price = 0.75; 
    } 
    else if (temp >= 76 && temp <= 80) 
    { 
     price = 0.80; 
    } 
    else if (temp >= 81 && temp <= 85) 
    { 
     price = 0.85; 
    } 
    else if (temp >= 86 && temp <= 90) 
    { 
     price = 0.90; 
    } 
    else if (temp > 90) 
    { 
     price = 1.00; 
    } 

    return price; 
} 
+1

你有没有通过您的代码调试?发生了什么,有哪些输入? (重要的是要学会如何为自己诊断问题......) –

+0

第一个条件解决了整个范围'(temp <50)'或'(temp> = 50)'抓住你测试的所有东西。缺少这样的东西:'(temp> = 50 && temp <= 60)' – areim

+0

也是你的代码质量很差,你总是重复相同的'else if(temp> = XY && temp <= YZ)'this表明,那是错的。在这种类型的代码中调试会更困难。如果你使用类似'price = round(temp/100)'的东西 - 这将解决你需要的一切(玩这个提示,不是真正的工作代码) – areim

回答

3

变化前两个条件

if (temp >=0 && temp < 50) 
    { 
     price = 0.50; 
    } 
    else if (temp >= 50 && temp < 61) 
    { 
     price = 0.55; 
    } 
1

因为前两个分支都是真实的。

1

看看你的if-else阶梯的起点。

if (temp < 50) 
{ 
    price = 0.50; 
} 
else if (temp >= 50) 
{ 
    price = 0.55; 
} 

第一种情况包括所有其中temp小于50。第二壳体覆盖,其中温度大于或等于50。这涵盖了所有可能的值,并且因此没有其它的所有部件的情况下子句被执行。

1

第一个else如果没有temp的上限。
更改 else if (temp >= 50)
else if (temp >= 50 && temp < 61)