Java arraylist get方法有问题

Java arraylist get方法有问题,java,arraylist,Java,Arraylist,基本上,我有一个BudgetItem对象的ArrayList BudgetItem是我创建的一个类。每个BudgetItem都有三个实例变量:price、name和quantity,每个变量都有setter和getter。我一次一个地将每个BudgetItem添加到ArrayList中,每个BudgetItem在price变量中包含不同的信息。当我使用get方法打印ArrayList的任何price元素时,控制台将始终打印最后输入的价格。下面,我将粘贴一些示例代码以提供帮助: public cl

基本上,我有一个BudgetItem对象的ArrayList BudgetItem是我创建的一个类。每个BudgetItem都有三个实例变量:price、name和quantity,每个变量都有setter和getter。我一次一个地将每个BudgetItem添加到ArrayList中,每个BudgetItem在price变量中包含不同的信息。当我使用get方法打印ArrayList的任何price元素时,控制台将始终打印最后输入的价格。下面,我将粘贴一些示例代码以提供帮助:

public class Register {
    private ArrayList<BudgetItem> register = new ArrayList<BudgetItem>();
    public Register(double[] price) {
        //Creates a register ArrayList with specified number of
        //elements and populates it with BudgetItems that contain
        //the data in the price array entered in the declaration.

        BudgetItem bi = new BudgetItem();

        for(int i = 0; i<price.length; i++) {
                bi.setPrice(price[i]);
        register.add(bi);
                if(i=0) {                //This if statement is for debugging.
                    System.out.println(register.get(i).getPrice());
                }
        }
            //This is also for debugging.
            double i = register.get(0).getPrice();
    System.out.println(i);
    }
}

通过调试,我发现问题在于ArrayList中的get方法。无论我做什么,它都会返回输入的最后一个price实例。我的问题是,为什么get方法不返回指定的元素?

您只需要添加一个BudgetItem并设置和重置其价格。您需要添加新的BudgetItem并相应地设置其价格。

您只需添加一个BudgetItem并设置和重置其价格。您需要添加新的BudgetItem并相应地设置其价格。

问题是您总是修改相同的BudgetItem对象

尝试:


问题是你总是修改同一个BudgetItem对象

尝试:

添加BudgetItem bi=新的BudgetItem;内部for循环

添加BudgetItem bi=新的BudgetItem;内循环

    for(int i = 0; i<price.length; i++) {
            BudgetItem bi = new BudgetItem(); <-- move it inside the for loop
            bi.setPrice(price[i]);
            register.add(bi);
    }