![](/img/trans.png)
[英]Java - Need help in finding the shortest string of an array, i'm close from what i see but i'm getting an error,
[英]I'm getting an error in my Java code but I can't see whats wrong with it. Help?
我得到的錯誤是在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()
方法。 數組沒有。
如果出於某種原因您不能使用集合。 你想轉:
payroll.add(employee);
進入:
this.add(employee);
工資單是一個數組。 您正在調用數組上的方法。 這是不可能的。
由於工資單是一個數組,因此需要
payroll[index].add(employee);
如果B類擴展了A:
A a = new B();
但不是:
B b = new A();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.