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?