现在不能提前知道满减规则,自然就用不了策略类了,那么像这样的问题该怎么办:基于促销信息 计算最低到手价 品牌方需要对价格进行管控 经销商的价格不能低于设置的红线价 如果最低到手价低于红线价 就认为是破价 会要求经销商进行整改 基于采集的价格 和 促销信息 计算最低到手价 规则如下 ``` 页面价格:2069.00 促销信息: 购买至少1件时可享受优惠,满2149元减130元 最低到手价: 2004 计算规则:购买2件的话 可以满减 那么此时每件到手价为: (2069*2 - 130) / 2 = 2004 页面价格:1969.00 促销信息:购买1-3件时享受单件价¥1969,超出数量以结算价为准,满399减10 最低到手价:1959 计算规则: 1969-10 页面价格:1899 促销信息:满4999减150,满3999减120,满2999减90,满1999减60,满999减30 最低到手价: 1849 计算规则:同上 但是取最低的那个 (1899*3 - 150)/3 (1899*2-90) / 2 1899-30 页面价格:440 促销信息:购买至少1件时可享受优惠 最低到手价:440 页面价格:529 促销信息: 无 最低到手价: 529 ``` 方法名: 计算最低到手价 方法输入:页面价格, 促销信息 返回: 最低到手价
时间: 2024-03-18 13:42:09 浏览: 44
对于这种情况,我们可以考虑使用条件语句和循环来实现计算最低到手价的功能。具体来说,可以按照以下步骤进行实现:
1. 首先,我们需要解析输入的促销信息。可以将促销信息存储在一个列表中,每个促销信息包含以下几个字段:满减金额、满减门槛、单件价格、购买数量上限。可以使用Java中的类来表示这些信息,比如说:
```java
public class PromotionInfo {
private int reduceAmount;
private int reduceThreshold;
private int singlePrice;
private int limit;
// 构造函数和getter/setter方法
}
```
2. 接着,我们可以根据商品的购买数量和单价,计算出所有可能的价格方案。可以使用两个循环,一个循环遍历购买数量,另一个循环遍历单价。对于每种方案,我们需要计算满减金额和总售价,并记录下来。
3. 然后,我们可以根据满减门槛,筛选出符合条件的价格方案,并计算最低到手价。具体来说,我们可以使用一个变量`minPrice`来记录当前的最低到手价,然后遍历所有符合条件的价格方案,比较它们的总售价和最低到手价,更新`minPrice`变量。
4. 最后,我们将计算出来的最低到手价返回即可。
下面是一个可能的实现,供参考:
```java
public int calculateLowestPrice(int pagePrice, List<PromotionInfo> promotions) {
int minPrice = Integer.MAX_VALUE;
for (int quantity = 1; quantity <= 3; quantity++) {
for (PromotionInfo info : promotions) {
for (int price = info.getSinglePrice(); price >= info.getReduceThreshold(); price--) {
int totalPrice = quantity * price;
int reduce = 0;
if (totalPrice >= info.getReduceThreshold()) {
reduce = info.getReduceAmount();
}
totalPrice -= reduce;
if (totalPrice / quantity < minPrice && totalPrice / quantity >= info.getSinglePrice()) {
minPrice = totalPrice / quantity;
}
}
}
}
return minPrice;
}
```
这个实现假设了购买数量的上限是3,且对于每种方案,购买数量必须相等。如果有其他要求,可以根据具体情况进行修改。
阅读全文