双十一购物车
This commit is contained in:
parent
00a5c68f22
commit
66c059eb0f
@ -106,6 +106,66 @@ public class ShoppingCart {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空购物车方法思路:
|
||||
* 1. 使用StringBuilder的setLength(0)清空购物车内容
|
||||
* - 比创建新对象更高效
|
||||
* - 比delete(0,length)更简洁
|
||||
* 2. 重置总价为0
|
||||
*
|
||||
* 为什么用setLength(0)而不是cart = new StringBuilder()?
|
||||
* - setLength(0)只是将长度设为0,原有空间仍可重用
|
||||
* - 创建新对象会产生额外的内存开销
|
||||
*/
|
||||
public void clearCart() {
|
||||
cart = new StringBuilder();
|
||||
totalPrice = 0.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对购物车中指定商品应用折扣
|
||||
* 折扣范围: 0.0-1.0 (例如0.8表示8折)
|
||||
* 实现思路:
|
||||
* 1. 检查折扣是否合法
|
||||
* 2. 在购物车中查找商品
|
||||
* 3. 提取商品原价
|
||||
* 4. 计算新价格并更新购物车
|
||||
* 5. 更新总价
|
||||
*
|
||||
* @param item 要打折的商品名称
|
||||
* @param discount 折扣率(0.0-1.0)
|
||||
* @throws IllegalArgumentException 当折扣不在有效范围内时抛出
|
||||
*/
|
||||
public void applyDiscount(String item, double discount) {
|
||||
// 验证折扣是否合法
|
||||
if (discount <= 0.0 || discount >= 1.0) {
|
||||
throw new IllegalArgumentException("折扣必须在0.0到1.0之间");
|
||||
}
|
||||
|
||||
// 查找商品在购物车中的位置
|
||||
String cartStr = cart.toString();
|
||||
int itemStart = cartStr.indexOf(item);
|
||||
if (itemStart == -1) {
|
||||
return; // 商品不存在,直接返回
|
||||
}
|
||||
|
||||
// 提取价格信息
|
||||
int priceStart = cartStr.indexOf("¥", itemStart);
|
||||
int priceEnd = cartStr.indexOf(")", priceStart);
|
||||
double originalPrice = Double.parseDouble(cartStr.substring(priceStart + 1, priceEnd));
|
||||
|
||||
// 计算新价格
|
||||
double newPrice = originalPrice * discount;
|
||||
|
||||
// 更新总价
|
||||
totalPrice = totalPrice - originalPrice + newPrice;
|
||||
|
||||
// 更新购物车中的价格
|
||||
String oldPriceStr = String.format("¥%.1f", originalPrice);
|
||||
String newPriceStr = String.format("¥%.1f", newPrice);
|
||||
cart.replace(priceStart, priceEnd, newPriceStr);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 测试购物车
|
||||
ShoppingCart cart = new ShoppingCart();
|
||||
@ -124,9 +184,19 @@ public class ShoppingCart {
|
||||
System.out.println("\n修改商品后:");
|
||||
System.out.println(cart.showCart());
|
||||
|
||||
// 应用商品折扣
|
||||
cart.applyDiscount("耳机", 0.8);
|
||||
System.out.println("\n应用折扣后:");
|
||||
System.out.println(cart.showCart());
|
||||
|
||||
// 删除商品
|
||||
cart.removeItem("耳机", 299.0);
|
||||
System.out.println("\n删除商品后:");
|
||||
System.out.println(cart.showCart());
|
||||
|
||||
// 清空购物车
|
||||
cart.clearCart();
|
||||
System.out.println("\n清空购物车后:");
|
||||
System.out.println(cart.showCart());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user