如何使用UWECStudent正确设置构造函数?

时间:2019-02-28 00:31:08

标签: java class if-statement constructor

我有几个班级,所以我将展示重要的班级,以便澄清它们。我只是被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");
    }

 }
}

只有那个方法和构造函数。就是这样。

0 个答案:

没有答案