为了账号安全,请及时绑定邮箱和手机立即绑定

制作杂货篮

制作杂货篮

慕田峪7331174 2022-05-12 17:30:00
所以我正在尝试创建一个程序,允许用户将物品放入杂货篮中。第 1 步:用户应该能够添加带有名称和价格的杂货项目。步骤2:篮子上不得添加重复名称第 3 步:用户应该能够删除指定名称的杂货。第 4 步:用户应该能够看到购物篮中的所有内容。我知道我快完成了,但我坚持第 3 步和第 4 步,有什么建议吗?这是我的代码public class Main {public static void main(String[] args) {Scanner myReader = new Scanner(System.in);        while (true) {    System.out.println("What would you want to do today?");    System.out.println("(A)dd grocery item\n(R)emove grocery item\n(S)ee all items");     System.out.println("Enter Command: ");    String toDo = myReader.nextLine();        if (toDo.equals("A")) {            System.out.print("New Item Name: ");            String grocery = myReader.nextLine();            GroceryPackage grocery1 = new GroceryPackage();            grocery1.addGrocery(grocery);            System.out.print("New Item Price: ");            String groceryPrice = myReader.nextLine();            grocery1.addGrocery(groceryPrice);            System.out.println("Added new item Succesfully!");        }        if (toDo.equals("R")) {            System.out.print("Name of the Item you want to Remove: ");            String removeItem = myReader.nextLine();            removeItem.removeGrocery(grocery);        }        if (toDo.equals("S")) {            System.out.print(GroceryPackage);        }        System.out.println("Thanks!");    }}}public class GroceryPackage {private String addGrocery;private boolean groceryPrice;private String removeGrocery;private String grocery1;public void setGrocery1(String grocery1) {    this.grocery1 = grocery1;}public void setListofGrocery(ArrayList<String> listofGrocery) {    this.listofGrocery = listofGrocery;}private ArrayList<String> listofGrocery;public GroceryPackage(String addGrocery, boolean groceryPrice) {    this.addGrocery = addGrocery;    this.groceryPrice = groceryPrice;                }public GroceryPackage() {    this.listofGrocery = new ArrayList<String>();}
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

不幸的是,这个程序有太多问题,无法简单地解决这个问题。您确实需要缩减程序并努力使其尽可能简单。你的程序远比它需要的大。

在同一个文件中不能有两个公共类。您的“GroceryPackage”类似乎没有提供任何您无法使用 ArrayList 变量“listofGrocery”本身的方法做的事情,除了跟踪价格(它不做)。它不必要地使程序复杂化。

您可以尝试完全删除它的“public”关键字,或者使其成为 Main 的私有或静态内部类。但是,我建议只是摆脱它。我真的不认为你需要它。

从技术上讲,您还没有达到第 2 步。没有什么可以防止 ArrayList 中出现重复值。我会用 aHashMap<String, Double>代替。这将允许您将“杂货”存储为字符串,其价格为 Double 值。

您可以在 GroceryPackage 中使用“getter”和“setter”方法来获取、修改和返回您的 ArrayList,直接使用获取变量GroceryPackage.listofGrocery(如果变量是私有的,listofGrocery 将无法使用它),或者只是将其设为你的主要课程。最后一种是最简单的选择。

我注意到您实际上从未将“listofGrocery”变量初始化为“GroceryPackage”的属性。

从风格上讲,“listofGrocery”应该是“listOfGrocery”。

您没有在 GroceryList 中使用“grocery1”属性。

要解决第二步,篮子上不应添加重复的名称

要么遍历数据结构中的所有值,要么使用抛出异常或返回可预测类型值的数据结构,如果要添加的值内部有重复值。确保无论您做什么,都不会替换数据结构中已经存在的任何值。

为了解决第三步,“用户应该能够删除指定名称的杂货。”

你尝试给你的“removeGrocery()”方法一个参数,即使它不需要任何参数。此外,clear() 方法会删除整个 ArrayList 中的所有值。仔细查看可用于您选择的任何数据结构的方法。

对于第四步,“用户应该能够看到购物篮中的所有内容”。

遍历篮子的所有内容。

总结一下。

我大多避免给你关于你的程序问题的直接答案。但是,希望你能接受我所说的并意识到你哪里出错了。实际上,有成千上万种不同的方法可以让您的程序满足要求。请务必在线仔细阅读javadocs。他们是无价的。最后,我注意到您从不在程序中使用任何循环。这些是新手程序员最好的朋友。学会爱他们。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号