【问题标题】:HashMaps for selectively choosing Options用于有选择地选择选项的 HashMaps
【发布时间】:2021-03-15 11:09:14
【问题描述】:

我正在尝试创建一个向用户显示餐厅的应用程序。 然后用户可以在提供的菜单上选择哪些项目:

HashMap<String, Double> mcDonMenu = new HashMap<>();
         mcDonMenu.put("Cheese Burger", 1.99);
         mcDonMenu.put("Cheese Burger with Bacon", 2.99);
         mcDonMenu.put("Double Cheese Burger", 2.99);
         mcDonMenu.put("Double Cheese Burger with Bacon", 3.99);
         mcDonMenu.put("Vaggie Burger", 2.50);
         System.out.println(mcDonMenu);

到目前为止,我有这个,我在过去几天里研究了这个,我来 Stack Overflow 寻求帮助。我了解如何做其他所有事情,我对 HashMaps 也很陌生。我看过的所有资源都无助于如何有选择地选择一个项目并将该项目添加到一个新数组或 HashMaps 以便稍后恢复以进行“结帐”。

任何指导将不胜感激。

【问题讨论】:

  • 如果您有项目名称,您可以执行 mcDonMenu.get("Cheese Burger"),这将为您提供 1.99 的值。如果您想遍历键并显示,您需要执行 mcDonMenu.keySet() ,它将为您提供字符串集。

标签: java arrays arraylist hashmap


【解决方案1】:

我建议你创建一个 Enum MenuItem

类似的,

public enum MenuItem { 
    CHEESE_BURGER(1.99),
    VEG_BURGER(0.99);
    private double price;
    public MenuItem(double price){ this.price = price; }
    public double getPrice(){
         return this.price;
    }
};

一旦你构建了它,你就可以拥有一个菜单项列表,而不是一个地图。

更好的替代方法是创建一个类 MenuItem 及其属性。从长远来看,这将在您开始向 MenuItem 添加多个属性时为您提供帮助。

【讨论】:

    【解决方案2】:

    我建议您阅读HashMap 的文档,以便快速回答您的问题。 HashMap 将允许您使用 get() 方法快速访问,该方法将您的 Key 作为参数并返回值。

    例如,在您的代码中,double choice = mcDonMenu.get("Cheese Burger"); 将在变量中存储 1.99。 Key 区分大小写,记住这一点很重要。

    其他有用的方法是.contains(),它可以检查您的地图中是否存在某些东西,以及keySet(),它将返回一组您的所有键。我链接的文档中提供了所有方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多