我创建了这个方法,要求用户输入作业详细信息,并保存到数组中:
公共静态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++;
}