首先创建一个包含项的数组列表
ArrayList<Item> Items
注意事项:项目有属性数量。然后,系统会要求使用者输入项目的名称和要舍弃的数量。但是,如果清单中出现多个名称相同的项目,则数量应该加在一起。例如,如果清单中包含“Apple”(数量5)和“苹果”(数量3),并且用户希望从物品列表中移除7个苹果,所有数量为5的第一个“Apple”将被丢弃,丢弃后第二个“Apple”将变为1。一旦数量=0,它将被删除解决此问题的适当方法是什么?
tkclm6bt1#
quantity
public void removeNameQuantity(String name, int q) { int totalQ = Items.stream() .filter(i -> name.equals(i.getName())) .mapToInt(Item::getQuantity) .sum(); if (totalQ < q) { System.out.println("Insufficient quantity of " + name + "(s) available"); return; // or throw some appropriate exception } for (Iterator<Item> it = Items.iterator(); it.hasNext() && q > 0;) { Item item = it.next(); if (name.equals(item.getName())) { int iq = item.getQuantity(); item.setQuantity(iq - Math.min(q, iq)); if (iq <= q) { it.remove(); } q -= iq; } } }
1条答案
按热度按时间tkclm6bt1#
quantity
以删除--如果项目的数量等于或小于零,则从列表中删除该项目。同样,将输入quantity
减少项目的数量,并在没有剩余数量时立即退出循环。