java:将对象添加到对象的ArrayList中;出错

java:将对象添加到对象的ArrayList中;出错,java,Java,我有三个班:公司、部门和员工。公司由部门组成,部门由员工组成。非常基本。但当我尝试设置每个员工的部门时,会出现以下错误: 令牌“countingGuru”上的语法错误,此令牌后应为VariableDeclaratorId 令牌上的语法错误,构造位置错误 我已经用谷歌搜索了错误,但我仍然很难找出我做错了什么 代码如下: public class Company { static String[] validDeptNames = { "Accounting", "Hum

我有三个班:公司、部门和员工。公司由部门组成,部门由员工组成。非常基本。但当我尝试设置每个员工的部门时,会出现以下错误:

  • 令牌“countingGuru”上的语法错误,此令牌后应为VariableDeclaratorId
  • 令牌上的语法错误,构造位置错误
我已经用谷歌搜索了错误,但我仍然很难找出我做错了什么

代码如下:

public class Company {
    static String[] validDeptNames = {
        "Accounting", "Human Resources", "Information Systems", "Marketing"
    };

    static Department accounting = new Department("Accounting");
    static Department marketing = new Department("Marketing");
    static Department infoSys = new Department("Information Systems");
    static Department humanRes = new Department("Human Resources");

    public static void main(String[] args) {

    }  
}

import java.util.ArrayList;

public class Department {
    Department department;

    ArrayList<Employee> employees;
    Department(String deptName){
        employees = new ArrayList<Employee>();

    }

    static Employee countingGuru = new Employee("Counting Guru", 55);
    static Employee countingPro = new Employee("Counting Pro", 45);
    static Employee countingSavvy = new Employee("Counting Savvy", 40);
    static Employee countingNovice = new Employee("Counting Novice", 25);
    static Employee salesGuru = new Employee("Sales Guru", 50);
    static Employee salesPro = new Employee("Sales Pro", 48);
    static Employee salesSavvy = new Employee("Sales Savvy", 38);
    static Employee hiringGuru = new Employee("Hiring Guru", 58);
    static Employee hiringPro = new Employee("Hiring Pro", 47);
    static Employee hackingPro = new Employee("Hacking Pro", 46);
    static Employee hackingGuru = new Employee("Hacking Guru", 51);
    static Employee hackingSavvy = new Employee("Hacking Savvy", 38);
    static Employee hackingNovice = new Employee("Hacking Novice", 23);

    public void addEmployee(Employee employee){
        employee.setDepartment(this);
        employees.add(employee);
    }

    accounting.addEmployee(countingGuru);

}
public class Employee implements Comparable<Employee> {
    String empName;
    int empAge;
    Department department;

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    String name;
    int age;
    public Employee(String name, int age) {
        this.name = name;
        this.age  = age;
    }

    public String getName() {
        return empName;
    }

    public void setName(String name) {
        this.empName = name;
    }

    public int getAge() {
        return empAge;
    }

    public void setAge(int age) {
        this.empAge = age;
    }

    @Override
    public int compareTo(Employee arg0) {
        return 0;
    }
}
上市公司{
静态字符串[]validDeptNames={
“会计”、“人力资源”、“信息系统”、“营销”
};
静态部门会计=新部门(“会计”);
静态部门营销=新部门(“营销”);
静态部门信息系统=新部门(“信息系统”);
静态部门人力资源=新部门(“人力资源”);
公共静态void main(字符串[]args){
}  
}
导入java.util.ArrayList;
公共课系{
部门,;
ArrayList员工;
部门(字符串部门名称){
employees=newarraylist();
}
静态员工盘点专家=新员工(“盘点专家”,55);
静态员工计数专业=新员工(“计数专业”,45);
静态员工计数平均值=新员工(“计数平均值”,40);
静态员工计数新手=新员工(“计数新手”,25);
静态员工销售专家=新员工(“销售专家”,50);
静态员工salesPro=新员工(“Sales Pro”,48);
静态员工销售悟性=新员工(“销售悟性”,38);
静态员工招聘专家=新员工(“招聘专家”,58);
静态员工招聘专业=新员工(“招聘专业”,47);
静态员工黑客专业=新员工(“黑客专业”,46);
静态员工黑客大师=新员工(“黑客大师”,51);
静态员工黑客萨维=新员工(“黑客萨维”,38);
静态员工黑客新手=新员工(“黑客新手”,23);
公共无效添加员工(员工){
员工。设置部门(本);
employees.add(employees);
}
会计。新增员工(会计专家);
}
公共类Employee实现了可比较的{
字符串名称;
内部管理;
部门,;
公共部门{
退货部;
}
公共服务部(部门){
这个部门=部门;
}
字符串名;
智力年龄;
公共雇员(字符串名称,整数年龄){
this.name=名称;
这个。年龄=年龄;
}
公共字符串getName(){
返回empName;
}
公共void集合名(字符串名){
this.empName=名称;
}
公共整数getAge(){
回报率;
}
公共无效设置(整数){
这个。empAge=年龄;
}
@凌驾
公共整数比较(员工arg0){
返回0;
}
}

您有
会计。添加员工(计数专家)在任何函数之外。像这样的非变量声明需要在方法、构造函数或函数中

由于
会计
公司
静态
成员,您需要将其引用为
公司.accounting.addEmployee(countingGuru)


顺便说一句,有这么多东西是静态的,这不是一个很好的设计,因为这意味着你创建的每个公司都有相同的会计、营销、infoSys和人力资源部门。您应该使这些字段非静态,并在
公司的构造函数中初始化它们。

您有
会计。addEmployee(countingGuru)在任何函数之外。像这样的非变量声明需要在方法、构造函数或函数中

由于
会计
公司
静态
成员,您需要将其引用为
公司.accounting.addEmployee(countingGuru)


顺便说一句,有这么多东西是静态的,这不是一个很好的设计,因为这意味着你创建的每个公司都有相同的会计、营销、infoSys和人力资源部门。您应该使这些字段非静态,并在
公司的构造函数中初始化它们。

您有
会计。addEmployee(countingGuru)在任何函数之外。像这样的非变量声明需要在方法、构造函数或函数中

由于
会计
公司
静态
成员,您需要将其引用为
公司.accounting.addEmployee(countingGuru)


顺便说一句,有这么多东西是静态的,这不是一个很好的设计,因为这意味着你创建的每个公司都有相同的会计、营销、infoSys和人力资源部门。您应该使这些字段非静态,并在
公司的构造函数中初始化它们。

您有
会计。addEmployee(countingGuru)在任何函数之外。像这样的非变量声明需要在方法、构造函数或函数中

由于
会计
公司
静态
成员,您需要将其引用为
公司.accounting.addEmployee(countingGuru)


顺便说一句,有这么多东西是静态的,这不是一个很好的设计,因为这意味着你创建的每个公司都有相同的会计、营销、infoSys和人力资源部门。您应该将这些字段设置为非静态字段,并在
公司的构造函数中初始化它们。

如果您将部门的构造函数更改为

Department(String deptName){
    employees = new ArrayList<Employee>();
    Company.accounting.addEmployee(countingGuru);
}

然后,您的代码将不会出错。

如果您更改
    accounting.addEmployee(countingGuru);