Java 方法将类添加到数组中,只将类添加到第一个位置

Java 方法将类添加到数组中,只将类添加到第一个位置,java,Java,这里是方法 public void addModuleToStudent(Module aModule) { int position = 0; if(position > 3) { System.out.println("Error: Student already has four modules\n"); } else { moduleArray[position] = aModule;

这里是方法

public void addModuleToStudent(Module aModule)
 {
    int position = 0; 
    if(position > 3)
    {
        System.out.println("Error: Student already has four modules\n");
    }
    else
    {
        moduleArray[position] = aModule;
        position++;
    }
 }

问题是位置似乎不是位置变量的增量,因为每次我添加模块类时,它占据数组中的第一个位置,而当我添加另一个而不是添加到第二个位置时,它会覆盖第一个位置。

是,
位置
是一个局部变量。每次调用
addModuleToStudent
,都会得到一个新变量,初始化为0

听起来您希望将其改为实例变量,以便它在方法调用之间保持不变

更好的是,不要使用数组-使用
ArrayList
,然后您可以使用:

public void addModuleToStudent(Module module)
{
    if (modules.size() > 3)
    {
        throw new SomeAppropriateException("Cannot have more than 4 modules");
    }
    modules.add(module);
}

每次调用该方法时,您都将
位置
重置为零

position
作为类中的实例变量,或者使用
向量或
数组列表来代替数组并调用:

modules.add(aModules);

将每个新模块添加到列表的末尾。

我假设您每次都在调用
addModuleToStudent
方法,并且希望添加模块,
moduleArray
是某个全局变量


这里的问题是,无论何时调用该方法,
position
总是初始化为0。要解决您的问题,您可能需要删除
int position=0行并将
位置
变量用作全局变量。

位置
是一个局部变量,每次调用
addModuleToStudent
方法时,它都会重新初始化为
。所以,做一些类似的事情

int position=0
public void addModuleToStudent(Module aModule)
{
  //your logic here

}

因为每次输入方法时都将
位置
初始化为0?