【问题标题】:Having trouble with the arraylist get method使用 arraylist get 方法时遇到问题
【发布时间】:2013-11-17 17:48:12
【问题描述】:

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

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 方法上。无论我做什么,它都会返回输入的最后一个价格实例。 我的问题是为什么get方法不会返回指定的元素?

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    问题是你总是修改同一个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);
        }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        在 for 循环中添加 BudgetItem bi = new BudgetItem();

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          • 2019-09-28
          • 1970-01-01
          相关资源
          最近更新 更多