我有几个班级,所以我将展示重要的班级,以便澄清它们。我只是被Student类下的java.lang.NullPointerException错误困住了。我在哪里输入默认值,所以我的 java.lang.NullPointerException得到修复了吗?
编辑:没有NullPointer参与。它不是以正确的方式设置构造函数。我找到了解决方案。
public class UWECStudent extends UWECAcademic
{
private double gpa;
public UWECStudent(int uwecId, String firstName, String lastName,
double gpa)
{
super(uwecId, firstName, lastName);
this.gpa = gpa;
}
public void setNumTotalCredits(int numTotalCredits)
{
if(numTotalCredits <= 24)
{
System.out.println("Freshman");
}
if(numTotalCredits > 24 && numTotalCredits < 57)
{
System.out.println("Sophmore");
}
if(numTotalCredits > 58 && numTotalCredits < 85)
{
System.out.println("Junior");
}
if(numTotalCredits == 85)
{
System.out.println("Senior");
}
}
public final double getGpa()
{
return gpa;
}
public String toString()
{
return "UWECStudent = uwecId: " + getUwecId() + ", name: " +
getFirstName() + " " + getLastName() + ", title: " + getTitle() + ",
credits: " + getNumTotalCredits() + ", gpa: " + getGpa();
}
public boolean equals(Object other)
{
if(other instanceof UWECStudent)
{
UWECStudent o = (UWECStudent) other;
return getNumTotalCredits() == o.getNumTotalCredits() && gpa == o.gpa && super.equals(other);
}
else
{
return false;
}
}
}
该问题发生在底部的我的equals方法中。此类从另一个继承。
public abstract class UWECAcademic extends UWECPerson
{
private int numTotalCredits;
public UWECAcademic(int uwecId, String firstName, String lastName)
{
super(uwecId, firstName, lastName);
setNumTotalCredits(numTotalCredits);
}
public final int getNumTotalCredits()
{
return numTotalCredits;
}
public void setNumTotalCredits(int numTotalCredits)
{
this.numTotalCredits = numTotalCredits;
}
public abstract String toString();
public boolean equals(Object other)
{
if(other instanceof UWECAcademic)
{
UWECAcademic o = (UWECAcademic) other;
return numTotalCredits == o.numTotalCredits &&
super.equals(other);
}
else
{
return false;
}
}
}
该类从另一类继承。我将发布它。
public abstract class UWECPerson
{
private int uwecId;
private String firstName;
private String lastName;
private String title;
public UWECPerson(int uwecId, String firstName, String lastName)
{
this.uwecId = uwecId;
this.firstName = firstName;
this.lastName = lastName;
}
public final int getUwecId()
{
return uwecId;
}
public final String getFirstName()
{
return firstName;
}
public final String getLastName()
{
return lastName;
}
public final String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public abstract String toString();
public boolean equals(Object other)
{
if(other instanceof UWECPerson)
{
UWECPerson o = (UWECPerson) other;
return uwecId == o.uwecId && firstName.equals(o.firstName) && lastName.equals(o.lastName) && title.equals(o.title);
}
else
{
return false;
}
}
}
我知道这很长,但是我对输入内容感到困惑。
编辑:因为这被标记为重复,所以不允许在此处发布正确的答案。我将在此处解决此问题的正确解决方案。主要是设置构造函数失败。这是我解决问题的方法。
public class UWECStudent extends UWECAcademic
{
private double gpa;
public UWECStudent(int uwecId, String firstName, String lastName, double gpa)
{
super(uwecId, firstName, lastName);
this.gpa = gpa;
setNumTotalCredits(getNumTotalCredits());
setTitle(getTitle());
}
public void setNumTotalCredits(int numTotalCredits)
{
super.setNumTotalCredits(numTotalCredits);
if(numTotalCredits < 24)
{
setTitle("Freshman");
System.out.println("Freshman");
}
else if(numTotalCredits >=24 && numTotalCredits < 58)
{
setTitle("Sophomore");
System.out.println("Sophomore");
}
else if(numTotalCredits >= 58 && numTotalCredits < 86)
{
setTitle("Junior");
System.out.println("Junior");
}
else if(numTotalCredits >= 86)
{
setTitle("Senior");
System.out.println("Senior");
}
}
}
只有那个方法和构造函数。就是这样。