0

何度も投稿してすみません。なぜ結果がNULLなのか行き詰まりました。それは真か偽であるはずです。従業員クラスでチェック値が連動していないと思います。何が問題なのか教えてください。

public class Employee {
    String name;
    PrimeAgeChecker checks;
    int age;
    Department department;
    public ArrayList<Employee> emplo;

    static Employee emp1 = new Employee(Department.Accounting,"Counting Guru",55);
    static Employee emp2 = new Employee(Department.Accounting,"Counting Pro", 45);
    static Employee emp3 = new Employee(Department.Accounting,"Counting Savvy", 40);
    static Employee emp4 = new Employee(Department.Accounting,"Counting Novice", 25);
    static Employee emp5 = new Employee(Department.Marketing,"Sales Guru", 50);
    static Employee emp6 = new Employee(Department.Marketing,"Sales Pro", 48);
    static Employee emp7 = new Employee(Department.Marketing,"Sales Savvy", 38);
    static Employee emp8 = new Employee(Department.Human_Resources,"Hiring Guru", 58);
    static Employee emp9 = new Employee(Department.Human_Resources,"Hiring Pro", 47);
    static Employee emp10 = new Employee(Department.Information_Systems,"Hacking Pro", 46);
    static Employee emp11 = new Employee(Department.Information_Systems,"Hacking Guru", 51);
    static Employee emp12 = new Employee(Department.Information_Systems,"Hacking Savvy", 38);
    static Employee emp13 = new Employee(Department.Information_Systems,"Hacking Novice", 23);

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


    public int getAge()
    {
        return age;
    }

    public String getName()
    {
        return name;
    }

    public PrimeAgeChecker GetChecker(PrimeAgeChecker checks)
    {
        return checks;

    }

    public void addEmplo(Employee x){
        if (emplo.isEmpty())
        {
            emplo.add(x);
        }
        else
        {
            int i;
            for ( i = 0;i <emplo.size(); ++i){
                if(emplo.get(i).getAge() > x.getAge()){
                    emplo.add(i,x);
                    break;
                }
            }

            if ( i == emplo.size()){
                emplo.add(x);
            }
        }
        }

    public ArrayList<Employee> getEmplo(){
        return emplo;
    }

    public String toString(){
        StringBuffer sb = new StringBuffer();
        sb.append(getDept(department));
        sb.append("\t");
        sb.append(getName());
        sb.append("\t");
        sb.append(getAge());
        sb.append("\t");
        sb.append(GetChecker(checks));

        return sb.toString();
    }

    private Department getDept(Department department){
        return department;
    }

}




public class PrimeAgeChecker{

    public boolean status = false;

    int ages;

    PrimeAgeChecker(Employee age)
    {
        ages = age.getAge();
    }


    public boolean check(){

            if ((ages % 2 == 0) || (ages == 2))
            {
                status = true;
            }

        return status;

    }
}

結果:

Department      Name    Age Prime
__________________________________________________
Accounting  Counting Guru   55  null
Accounting  Counting Pro    45  null
Accounting  Counting Savvy  40  null
Accounting  Counting Novice 25  null
Marketing   Sales Guru  50  null
Marketing   Sales Pro   48  null
Marketing   Sales Savvy 38  null
Human_Resources Hiring Guru 58  null
Human_Resources Hiring Pro  47  null
Information_Systems Hacking Pro 46  null
Information_Systems Hacking Guru    51  null
Information_Systems Hacking Savvy   38  null
Information_Systems Hacking Novice  23  null
4

2 に答える 2

0

変数checksを何にも設定しないため、読み取ると値が になりますnull

Employee次のように、コンストラクターでこの変数を設定するつもりだったと推測できます。

Employee(Department department,String name, int age)
{
    this.department = department;
    this.name = name;
    this.age = age;
    this.checks = new PrimeAgeChecker(this);
}

PrimeAgeCheckerまた、Christian が述べたように、 aを toに渡すのは意味がありませんGetChecker

于 2013-10-24T02:50:28.533 に答える