【问题标题】:I always get the last value of an ArrayList我总是得到 ArrayList 的最后一个值
【发布时间】:2016-05-04 09:14:17
【问题描述】:

请在将其标记为重复之前阅读该帖子。

我不是 Java 专家

这是我正在尝试做的简化代码:

import java.util.ArrayList;

public class Parameter {

    private static ArrayList<Integer> quantityArray = new ArrayList<>();

    public static void quantityPriorityValues() {
        int q = 0 ;
        for (int i = 0; i < 5 ; i++ ) {
            quantityArray.add(q);
            q++;
        }
    }

    public static ArrayList<Integer> getQuantityArray() {
        return quantityArray;
    }

    public void setQuantityArray(ArrayList<Integer> quantityArray) {
         this.quantityArray = quantityArray;
    }
}

public class Connection {

    public void getParameters () {
        i = 0;    
     Parameter.quantityPriorityValues();

        while (i < 5) {

            int quantity = Parameter.getQuantityArray().get(i);
            System.out.println(quantity);
            i++;

        }
    }

}

它总是打印出数组列表的最后一个值。 我检查了关于这个问题的答案,比如这个one和这个one,他们都说staticfields中的问题。所以我试图从ArrayList&lt;Integer&gt; quantityArray中删除static,但这意味着getter 和 setter 也应该是 non-static,我将无法在 Connection 类中调用 getter。

我想要这个输出:0 1 2 3 4

但我得到这个输出:4

有人有其他解决方案吗?

【问题讨论】:

  • 您能否添加预期的输出和您得到的输出?
  • 请包含您的主要方法,以便我们可以看到您在哪里初始化列表。
  • 确实 - 理想情况下,将其重写为 minimal reproducible example。
  • @StepTNT 我编辑了我的问题
  • @Eran :实际上这两个类是 JDialog 类,在我的主要方法中,我只是创建该类的一个新实例并将其设置为可见。

标签: java arraylist


【解决方案1】:

在您的 getParameters() 函数中 像这样创建一个 ArrayList:

ArrayList<Integer> quantityArray = Parameters.getQuantityArray();

你可以改变你的while循环:

for (Integer i : quantityArray)
    System.out.println(i);

它应该可以工作

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 2021-06-18
    • 2021-07-06
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多