首页 > 解决方案 > C# 中基于距离的价格计算

问题描述

我必须根据距离和公里数来计算价格。有人可以帮助我实现目标。我的数组如下:

List<PriceStructure> priceStructure = new List<PriceStructure>()
{
    new PriceStructure { FromKm = 1, ToKm = 10, Price = 90, IsMinimum = true, IsContact = false },
    new PriceStructure { FromKm = 11, ToKm = 20, Price = 7, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 21, ToKm = 30, Price = 6, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 31, ToKm = 40, Price = 5, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 41, ToKm = 50, Price = 4, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 51, ToKm = 60, Price = 3, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 61, ToKm = 70, Price = 2, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 71, ToKm = 300, Price = 1.50M, IsMinimum = false, IsContact = false },
    new PriceStructure { FromKm = 301, ToKm = 0, Price = 0, IsMinimum = false, IsContact = true }
};

如果距离在 1 到 10 公里之间,最低价格为 90。如果距离超过 10,则每公里将根据每行的数组中定义的价格按每公里计算(从第 11 公里开始)。

例如:

标签: c#

解决方案


您可以创建一个函数来反映您已经完成的计算,例如:

int CalculatePrice(PriceStructure ps) {

    int distance = ps.ToKm - ps.FromKm;  

    if(distance < 10) {
       return 90;
    }

    int price = 90 + ((distance - 10) * ps.Price);

    return price;

} 

然后,您可以迭代priceStructure并使用列表中的每个项目调用该函数。

为了改进代码,您也许可以将最小距离视为一个常数或至少一个变量。我还建议将PricePriceStructure 中的属性重命名为更能代表实际价值的东西,听起来像PricePerKm


推荐阅读