将对象保存到阵列并打印存储的对象数据



我创建了这个方法,要求用户输入作业详细信息,并保存到数组中:

公共静态void addJob(({currentJobIndex=0;

jobs[currentJobIndex] = new Job();
jobs[currentJobIndex].getInformation();
jobs[currentJobIndex].calculateCost();
jobs[currentJobIndex].display();
jobs[currentJobIndex].getCostTotal();
currentJobIndex++;

我有这个方法来显示数组中保存的所有作业:

公共静态void showAllJobs(({

for (Job job : jobs) {
if (job != null) {
job.display();
}
}
}

它只是显示最后一份进入的工作,我不知道为什么,任何帮助都将不胜感激!

这是因为每次调用该方法时,都会再次执行currentJobIndex = 0;,因此不会转到数组中的下一个位置,而是始终写入jobs[0]currentJobIndex需要是一个全局变量,如下所示:

public class Job(){
private int[] jobs = new int[5]; // Specify length of array here.
private currentJobIndex = 0;
public void addJob(){
jobs[currentJobIndex] = new Job();
jobs[currentJobIndex].getInformation();
jobs[currentJobIndex].calculateCost();
jobs[currentJobIndex].display();
jobs[currentJobIndex].getCostTotal();
currentJobIndex++;
}
}

(旁注:由于您可能不知道会提前存储多少个作业,因此列表将是更好的选择。(

这是因为添加新作业时currentJobIndex不会增加。

您可以通过添加以下内容来修复此问题:

public static void addJob() { currentJobIndex = 0;
jobs[currentJobIndex] = new Job();
jobs[currentJobIndex].getInformation();
jobs[currentJobIndex].calculateCost();
jobs[currentJobIndex].display();
jobs[currentJobIndex].getCostTotal();
currentJobIndex++;
}

最新更新