此代码似乎不起作用。我似乎无法弄清楚它为什么不是,但是当我运行它时,它似乎从选项中选择一个随机价格而不是实际上是温度。我也想知道是否有更好的方法来实现我正在尝试做的事情,而不是一个巨大的if-else阶梯。感谢
public static double GetPrice ()
{
if (temp >= 0 && temp < 50)
{
price = 0.50;
}
else if (temp >= 50 && temp <= 60)
{
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;
}
答案 0 :(得分:0)
当我尝试它时,它的工作方式如何。你可以做些什么来保持代码更小是在if和else之后放出{}。因为:
if (temp >= 0 && temp < 50)
{
price = 0.50;
}
else if (temp >= 50 && temp <= 60)
{
price = 0.55;
}
与此相同:
if (temp >= 0 && temp < 50) price = 0.50;
else if (temp >= 50 && temp <= 60) price = 0.55;
所以你可以把它们全部写在一起。 这仅适用于if或else if之后只有一个语句。
答案 1 :(得分:0)
我怀疑你的问题是你把方法声明为&#34;静态&#34; (并且很可能是变量&#34; temp&#34;以及&#34;价格&#34;以及),同时尝试将其用作实例方法。
要么使方法非静态,要么改变它,以便你必须通过&#34; temp&#34;并直接返回值,而不是先将其保存在静态变量中。
public static double GetPrice (double temp)
{
if (temp >= 0 && temp < 50)
{
return 0.50;
} else if (temp >= 50 && temp <= 60) {
return 0.55;
}
}
答案 2 :(得分:0)
在我看来,您的代码正常运行。 如果您不想使用if else链并希望代码比ParkerHalo的代码更复杂:)您可以声明范围并将它们列入列表
public static double GetPrice()
{
class PriceLevel
{
public double theHighestVal;
public boolean valIncluded; // determines if < or <= comparator should be used
public double priceLevel;
}
List<PriceLevel> priceLevels = new ArrayList<PriceLevel>()
{{
add(new PriceLevel() {{theHighestVal=0; valIncluded=false; priceLevel=0.0;}});
add(new PriceLevel() {{theHighestVal=50; valIncluded=false; priceLevel=0.50;}});
add(new PriceLevel() {{theHighestVal=60; valIncluded=true; priceLevel=0.55;}});
add(new PriceLevel() {{theHighestVal=65; valIncluded=true; priceLevel=0.60;}});
add(new PriceLevel() {{theHighestVal=70; valIncluded=true; priceLevel=0.65;}});
add(new PriceLevel() {{theHighestVal=75; valIncluded=true; priceLevel=0.75;}});
add(new PriceLevel() {{theHighestVal=80; valIncluded=true; priceLevel=0.80;}});
add(new PriceLevel() {{theHighestVal=85; valIncluded=true; priceLevel=0.85;}});
add(new PriceLevel() {{theHighestVal=90; valIncluded=true; priceLevel=0.90;}});
}};
double price = 1.0;
for (PriceLevel l : priceLevels)
{
if (l.valIncluded ? temp <= l.theHighestVal : temp < l.theHighestVal)
{
price = l.priceLevel;
break;
}
}
return price;
}