我得到的错误是在 while 循环中的 fillPayroll() 方法中,它说 payroll.add(employee)。错误说我不能在数组类型 Person 上调用 add() 但 Employee 类继承自 Person 所以我认为这是可能的。谁能为我澄清一下?
import java.io.*;
import java.util.*;
public class Payroll
{
private int monthlyPay, tax;
private Person [] payroll = new Person [1];
//Method adds person to payroll array
public void add(Person person)
{
if(payroll[0] == null) //If array is empty, fill first element with person
{
payroll[payroll.length-1] = person;
}
else //Creates copy of payroll with new person added
{
Person [] newPayroll = new Person [payroll.length+1];
for(int i = 0;i<payroll.length;i++)
{
newPayroll[i] = payroll[i];
}
newPayroll[newPayroll.length] = person;
payroll = newPayroll;
}
}
public void fillPayroll()
{
try
{
FileReader fromEmployee = new FileReader ("EmployeeData.txt");
Scanner data = new Scanner(fromEmployee);
Employee employee = new Employee();
while (data.hasNextLine())
{
employee.readData(data.nextLine());
payroll.add(employee);
}
}
catch (FileNotFoundException e)
{
System.out.println("Error: File Not Found");
}
}
}
最佳答案
使用 ArrayList
而不是使用数组。你会更快乐。
数组一旦创建就无法调整大小。所有用于管理的样板文件均由 ArrayList
完成。在元素中使用带有子类的数组还有其他问题(围绕协方差)。可能您唯一需要更改的行是:
private final List<Person> payroll = new ArrayList<Person>();
List
有一个 add()
方法。数组没有。
关于java - 我的 Java 代码出现错误,但我看不出它有什么问题。帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516908/