我的Java代码出错,但我看不出它有什么问题。 救命?
我得到的错误是在while循环中的fillPayroll()方法中,它表示payroll.add(employee)。 错误说我不能在数组类型Person上调用add()但是Employee类inheritance自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 payroll = new ArrayList ();
List
有一个add()
方法。 数组没有。
如果由于某种原因你不能使用集合。 你想转:
payroll.add(employee);
进入:
this.add(employee);
工资单是一个数组。 您正在调用数组上的方法。 这是不可能的。
由于工资单是一个数组,它需要
payroll[index].add(employee);
如果B类扩展A:
A =新B();
但不是:
B b = new A();