You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Box鲜花存储类与价目表?含FloristsTest代码相关问题

嘿,我来帮你搞定这两个问题——Box类的实现和动态定价的逻辑,结合你的FloristsTest类一步步梳理:

鲜花存储与动态定价实现方案

一、Box类的实现(鲜花存放与存储)

Box类的核心就是帮你管理不同颜色的鲜花数量,要能方便地添加鲜花、查询某颜色的数量。用HashMap<String, Integer>来存颜色和对应数量的映射是最优解,查询和修改效率都高。给你写个实用的实现:

public class Box {
    // 用HashMap存储颜色到数量的映射,键是鲜花颜色,值是该颜色的数量
    private final HashMap<String, Integer> flowerInventory = new HashMap<>();

    // 添加指定数量的某颜色鲜花,自动累加已有数量
    public void addFlowers(String color, int count) {
        flowerInventory.put(color, flowerInventory.getOrDefault(color, 0) + count);
    }

    // 获取指定颜色的鲜花数量,没有的话返回0
    public int getFlowerCount(String color) {
        return flowerInventory.getOrDefault(color, 0);
    }

    // 可选:清空箱子里的所有鲜花
    public void clear() {
        flowerInventory.clear();
    }
}

这个类很简洁:addFlowers方法会自动处理数量累加(比如原来有3朵红玫瑰,再加2朵就变成5朵),getFlowerCount能快速查到某颜色的数量,完全满足存放和存储的需求。

二、价目表与动态定价逻辑实现

你说用HashMap做价目表是对的,我们可以把价目表放在FloristsTest类里统一管理,这样就能从这里获取价格,同时实现数量不同的单价规则。

这里的思路是:用静态HashMap存储不同颜色的基础单价,然后在valueOf方法里根据鲜花数量调整单价——数量超过5时用优惠价7,≤5时用基础价(默认8)。完善后的FloristsTest类如下:

import java.util.HashMap;

public class FloristsTest {
    // 静态价目表:存储不同颜色的基础单价
    private static final HashMap<String, Integer> PRICE_LIST = new HashMap<>();

    // 初始化价目表,这里可以添加任意颜色的基础价
    static {
        PRICE_LIST.put("red", 8);
        PRICE_LIST.put("blue", 8);
        PRICE_LIST.put("yellow", 8);
    }

    // 计算指定颜色鲜花的总价值
    static int valueOf(Box box, String color) {
        int flowerCount = box.getFlowerCount(color);
        if (flowerCount == 0) {
            return 0; // 没有该颜色鲜花,价值为0
        }
        // 获取基础单价,未知颜色默认用8
        int basePrice = PRICE_LIST.getOrDefault(color, 8);
        // 根据数量判断最终单价:超5用7,否则用基础价
        int unitPrice = flowerCount > 5 ? 7 : basePrice;
        // 总价值 = 数量 × 单价
        return flowerCount * unitPrice;
    }

    public static void main(String[] args) {
        // 测试示例
        Box myBox = new Box();
        
        // 添加6朵红色鲜花,数量超5,单价7,总价值42
        myBox.addFlowers("red", 6);
        System.out.println("Red flowers value: " + valueOf(myBox, "red")); // 输出42
        
        // 添加3朵蓝色鲜花,数量≤5,单价8,总价值24
        myBox.addFlowers("blue", 3);
        System.out.println("Blue flowers value: " + valueOf(myBox, "blue")); // 输出24
        
        // 再添加2朵红色鲜花,总数8,仍用单价7,总价值56
        myBox.addFlowers("red", 2);
        System.out.println("Red flowers value after adding: " + valueOf(myBox, "red")); // 输出56
    }
}

关键逻辑说明:

  • 价目表管理:静态的PRICE_LIST在类加载时初始化,所有价格都集中在FloristsTest里,符合你“从FloristsTest获取价格”的需求,后续修改价格也只需要改这里。
  • 动态定价:valueOf方法先从Box中拿到鲜花数量,再根据数量判断单价——如果数量超过5,就用优惠价7,否则用价目表里的基础价(未知颜色默认用8),逻辑清晰还容易扩展。
  • 职责分离:Box类只负责存鲜花,FloristsTest负责价格计算,符合单一职责原则,代码更易维护。

内容的提问来源于stack exchange,提问作者Jakub trolololoization Dobrze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:31