0

返回类型为动态时如何避免过多的 if 条件?

我知道如果条件和值是静态的,我们可以创建一个带有键和值的哈希图,也可以避免太多的 if 条件。

在下面的示例中,每个月的价格因客户而异...我需要添加 12 个相同的 if 语句...假设该字段
不是月份...他们最终可能会得到更多大于 100 或 200 if's...ex: for year...1900 to 2000

Example,

public String getPrice(int Month) {
   String price = "";
   switch (month) {
        case 1:
          price = customerTable.getJanPrice();
          break;
        case 2:
          price = customerTable.getFebPrice();
          break;
         ...........
    }
    return price;
}

你能帮我提出你的建议/意见吗?

谢谢, 凯瑟尔

4

2 回答 2

2

使用您想要的价格创建一个枚举。

public enum Month 
{
    SEPTEMBER (3.33),
    OCTOBER (4.85),
    NOVEMBER (5.98),
    etc ;

    public final double Price;

    Month(double monthPrice)
    {
        this.Price = monthPrice;
    }        
}

然后访问该价格:

Month.SEPTEMBER.Price

编辑 因为数据在运行时更改并且它们是“无限”数量的可能性,所以使用类将是一个更易于管理的选项。

public class Year
{   
    public final List<Month> Months;

    public Year(List<Month> months)
    {
        Months = months;
    }
}

public class Month
{
    public final double Price;

    public Month(double price)
    {
        Price = price;
    }
}
于 2012-08-12T16:54:28.367 回答
0

如果(假设这里)为每个客户返回的“数据对象”是某种 hashmap (kv-store) 怎么办。

然后使用一些约定,您可以使用<day,month,year>-combi 构建一个密钥,该密钥用于在返回的数据对象中查找该特定组合的价格。

于 2012-08-13T08:17:07.147 回答