有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何创建一个将数组添加到arraylist并对其调用方法的主方法?

我有一个类,它的目的是从ArrayList中的数组中获取类型为double的值,并按定义的速率增加它们:

import java.util.ArrayList;

public class Company {
    static ArrayList<Employee> employees;

    public Company() {
        Company.employees = new ArrayList<Employee>();
    }


    public static ArrayList<Employee> getEmployees() {
        return employees;
    }

    public static void setEmployees(ArrayList<Employee> employees) {
        Company.employees = employees;
    }

    public void increaseSalaries(double rate) {
        if (rate <= 0.0) {
            throw new IllegalArgumentException();
        } else {
            for (int i = 0 ; i < employees.size() ; i++) {
                employees.get(i).increaseSalaries(rate);
            }
        }
    }
}

我想写一个main方法来构建一个arraylist并在其上调用该方法,但我不确定如何实现。到目前为止我有

public static void main(String[] args) {
    Company businesstown;
    HourlyEmployee george;
    MonthlyEmployee ambrose;
    george = new HourlyEmployee("George", "McClellan", "1537", 1.04);
    ambrose = new MonthlyEmployee("Ambrose", "Burnside", "1536", 741.0);
}

但是我不确定如何将这些数组添加到ArrayListbusinesstown。我已经尝试了很多.add(george);的组合,但我做不好。要么它说

the method add(HourlyEmployee) is not defined for type Company

或者它编译并抛出一个NullPointerException

(我应该补充HourlyEmployeeMonthlyEmployee都是扩展Employee的类)


共 (2) 个答案

  1. # 1 楼答案

    在我看来,最好将ArrayList设置为类的私有成员,并使用add方法添加员工

    public class Company {
        private ArrayList<Employee> employees;
    
        public Company() {
            employees = new ArrayList<Employee>();
        }
    
        public void addEmployee(Employee e) {
            employees.add(e);
        }
        //rest of code
    }
    

    大体上

    public static void main(String[] args) {
        Company businesstown = new Company();
        HourlyEmployee george = new HourlyEmployee("George", "McClellan", "1537", 1.04);
        MonthlyEmployee ambrose = new MonthlyEmployee("Ambrose", "Burnside", "1536", 741.0);
        businesstown.add(george);
        businesstown.add(ambrose);
    }
    
  2. # 2 楼答案

    您可以将它们添加到getEmployees返回的List

    businesstown.getEmployees().add(george);
    businesstown.getEmployees().add(ambrose);
    

    但是在访问businesstown之前,请确保初始化实例及其内的employees

    Company businesstown = new Company(); // since for you this is initialisin the list as well