抱歉发了这么多次。我被困住了为什么结果是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。
如果您说它应该返回 true
或 false
值,那么您需要:
- 将
GetChecker
的返回类型设置为boolean
,并从方法签名中删除checks
参数。请记住,由于GetChecker
方法是实例方法,并且checks
字段也是同一对象的实例成员,因此不需要传递参数进入方法;该方法可以直接调用它。 - 实例化
checks
成员变量(很可能在构造函数中) - 考虑到您的 PrimeAgeChecker 类的用途,我猜您打算调用
return Checks.check()
另外,一些小建议,你有两个拼写错误/命名约定错误:
- 我猜测,您的
emplo
变量应该命名为employees
或类似的名称。 getter 和 setter 方法也应进行类似的重命名。 - 按照 Java 标准,
GetChecker
方法的首字母应小写。这不会导致任何语法问题,因为 Java 并不关心,但它是该语言的标准,如果保持一致,它会使您的代码更容易被其他人(以及您自己)阅读。
关于java - Primeagechecker 的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555688/