java - Primeagechecker 的空值

标签 java

抱歉发了这么多次。我被困住了为什么结果是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

最佳答案

你的方法:

public PrimeAgeChecker GetChecker(PrimeAgeChecker checks){
    return checks;
}

没有意义,因为它只是重新调整所赋予的值。此外,您永远不会实例化名为 checks 的实例变量。稍后在代码中,当您调用 GetChecker(checks) 时,由于该变量从未实例化,因此您将传递 null,然后返回 null。

如果您说它应该返回 truefalse 值,那么您需要:

  1. GetChecker的返回类型设置为boolean,并从方法签名中删除checks参数。请记住,由于 GetChecker 方法是实例方法,并且 checks 字段也是同一对象的实例成员,因此不需要传递参数进入方法;该方法可以直接调用它。
  2. 实例化 checks 成员变量(很可能在构造函数中)
  3. 考虑到您的 PrimeAgeChecker 类的用途,我猜您打算调用 return Checks.check()

另外,一些小建议,你有两个拼写错误/命名约定错误:

  • 我猜测,您的 emplo 变量应该命名为 employees 或类似的名称。 getter 和 setter 方法也应进行类似的重命名。
  • 按照 Java 标准,GetChecker 方法的首字母应小写。这不会导致任何语法问题,因为 Java 并不关心,但它是该语言的标准,如果保持一致,它会使您的代码更容易被其他人(以及您自己)阅读。

关于java - Primeagechecker 的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555688/

相关文章:

java - 在添加新行之前验证行不为空

java - localhost :8080/lio/works great in my apachtomcat. 但是当我输入 <my ip>:8080/lio/i 时出现错误

java - 使用不同的参数在 Java 中重试 Junit 测试

java - 在java中对超大字符串数组进行排序

java - 在java Android中为自定义Dialog创建一个通用类

java - Intellij 理念 : One line if on two lines

java - 用Java表达Excel公式(小数转时间解释)

java - 如何优化 Java 中多项式求根的二分法?

java - 哪里可以获得 Java.media 包?

java - 有没有类似的jtrac票务系统?