我有一个简单的Java“购物篮”程序,目前可以将商品及其价格添加到购物篮中。现在,我想添加功能以显示篮子的全部内容,但是在某处似乎出错了...
我有一个menu()
方法,该方法在类Program.java
中定义,该方法正在“驱动”程序:
public static void menu() {
System.out.println("Press 1 to add an item to the basket. ");
System.out.println("Press 2 to remove an item from the basket. ");
System.out.println("Press 3 to display the basket contents. ");
System.out.println("Press 9 to proceed to checkout. ");
System.out.println("Press 0 to exit program");
menuSelection = kb.nextInt();
if(menuSelection == 1) {
System.out.println("Enter the name of the item: ");
item.name = kb.next();
System.out.println("Enter the price of the item: ");
item.price = kb.nextDouble();
basket.addItemToBasket(item);
} else if(menuSelection == 2) {
System.out.println("Which item would you like to remove? ");
item.name = kb.nextLine();
//basket.removeItemFromBasket(item);
basket.removeItemFromBasket(item);
} else if (menuSelection == 3) {
basket.displayBasket();
} else if(menuSelection == 9) {
System.out.println("Proceed to checkout");
} else if(menuSelection == 0) {
System.exit(0);
}
}
我目前正在使用displayBasket()
类中定义的方法Basket.java
,并且应该显示购物篮的全部内容。
当前定义为:
public void displayBasket() {
//return basket.toString();
int i = 0;
//while(i < basket.size()) {
// System.out.println(basket.get(i).name);
// i++;
//}
for(Item itm : basket) {
System.out.println(itm.name);
}
}
addItemToBasket()
的方法在Basket.java
中也定义为:
public void addItemToBasket(Item item) {
basket.add(item);
Program.menu();
}
但是我显然在这里对循环做错了,因为每当我选择调用此方法的选项时,它只会打印出最后添加到列表中的项目,以获得列表中项目的总数。
例如,如果我将“面包”,“牛奶”和“咖啡”及其价格添加到列表中,然后从菜单中选择选项3,以显示购物篮的内容,则会得到输出:
咖啡
咖啡
咖啡
这是为什么?我在做什么导致我的循环