java - 每次调用方法时 ArrayList 都会重新初始化

标签 java arraylist

我编写了一种方法(程序的一部分),它接受两个 int 值(下面的代码)。
一个 int 值代表完成 java 培训的人员数量,另一个 int 值代表完成 java 培训的人员数量php 训练已完成。
我希望数组列表随着每次函数调用而增长。
示例:第一次使用值 (5,0) 调用该函数。因此,java 的 arrayList 为 [5] ,而 php 的 arrayList 为 [0] 。
下次我用值 (2,3) 调用该函数。 java 的 arrayList 现在应该是 [5][2],sum 应该是 7。php 的 arraylist 应该是 [0][3],sum 应该是 3。
我的代码的问题是,当我第二次调用该方法,它删除了 java arrayList 中的 [5](第一次调用的第一个索引的值),仅采用 [2] 的形式并给出总和 2(而不是所需的 7) )。 arrayList 永远不会增长。 (对于 php arrayList 也是如此)
我确信我在这里做了一些概念上错误的事情。请帮忙不知何故,按照我编码的方式,每个函数调用似乎都会创建一个新的 arrayList,而不是增加从前一个调用中获得的 arrayList。

public class TrainingCamp {

public static int trainedJavaGuys ;
public static int trainedPHPGuys ;


public void trainedTroopsInCamp(int java,int php){

    //System.out.println("********* Current Status of Training Camp ********* ");


    ArrayList<Integer> trainingListJava = new ArrayList<>();
    trainingListJava.add(java);
    //System.out.println("---JavaARRAYLIST----"+trainingListJava);
    trainedJavaGuys = sumList(trainingListJava);


    ArrayList<Integer> trainingListPHP = new ArrayList<>();
    trainingListPHP.add(php);
    trainedPHPGuys = sumList(trainingListPHP);
    //System.out.println("---phpARRAYLIST----"+trainingListPHP);

从另一个类中这样调用它:

TrainingCamp currentTrainingCamp = new TrainingCamp();
currentTrainingCamp.trainedTroopsInCamp(2, 0);

下一次,仅更改输入参数即可执行相同的两行

最佳答案

每次调用 trainedTroopsInCamp() 时,arraylist 都会重新初始化,因为它们是在内部声明的。

您应该创建arraylist成员变量,以便它们仅在类的构造函数中初始化一次。

public class TrainingCamp {

    public static int trainedJavaGuys ;
    public static int trainedPHPGuys ;

    // Declare once
    ArrayList<Integer> trainingListJava; 
    ArrayList<Integer> trainingListPHP;

    public TrainingCamp() {
        // Initialize once
        trainingListJava = new ArrayList<>();
        trainingListPHP = new ArrayList<>();
    }

    public void trainedTroopsInCamp(int java,int php){
        // Use everywhere
        trainingListJava.add(java);
        trainedJavaGuys = sumList(trainingListJava);

        trainingListPHP.add(php);
        trainedPHPGuys = sumList(trainingListPHP);
    }
}

关于java - 每次调用方法时 ArrayList 都会重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34385800/

相关文章:

java - SQLite异常: No such table even if there is table

python - 从文件中的数据组成的列表中删除字符

java - 复制数组和数组列表的有效方法?

java - Math rand 的这种改组是如何进行的?

java - 无法通过蓝牙进行调试

java - 在 MapReduce 作业中使用 selenium 对 Hadoop 有好处吗?

java - ArrayList 对对象的引用

java - 尝试从以前的数组创建 ArrayList<Object> - Java

java - 使用ASM进行字节码分析

java - JFrame连续调用函数来检查结果