Java-为什么我的for循环仅显示添加到ArrayList的最后一个元素?

时间:2018-07-03 09:24:30

标签: java for-loop

我有一个简单的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,以显示购物篮的内容,则会得到输出:

  

咖啡

     

咖啡

     

咖啡

这是为什么?我在做什么导致我的循环

0 个答案:

没有答案