簡體   English   中英

我的Java代碼出現錯誤,但看不到它有什么問題。 救命?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM