getGender() returning null with isMale



每当我运行getGender()时,它都显示为null。让我困惑的是isMale

public Student(String sid, String name,  boolean isMale)
{       
    this.sid = sid;
    this.name = name;
    this.isMale = isMale;
    courses = "30202";  // default is empty
}

我已经让它能够返回一个值,但它以"true"或"false"返回,而不以"Male"或"Female"返回,但这是将其返回为null的代码。我停滞不前。

您的构造函数不会设置字段String gender。你可以,

public Student(String sid, String name,  boolean isMale){       
  this.sid = sid;
  this.name = name;
  this.isMale = isMale;
  this.gender = (isMale) ? "Male" : "Female";
  courses = "30202";  // default is empty
}

当然,那么你的输出可能是

Male: Female

所以,我认为你真的想要

// System.out.println("Male: " + getGender());
System.out.println("Gender: " + getGender());

然后你会得到

Gender: Male

Gender: Female

您的isMale变量指示此人是否为Male。

您应该更改getGender方法,使其在isMale=true时返回"Male",在isMale=false时返回"Female"。

   /**
     * Get the gender of the student, i.e. "Male" or "Female"
     *
     * @return The String "Male" if the student is male,
     *         otherwise "Female".
     */
    public String getGender()
    {
        if(isMale) {
          gender = "Male";
        }
        else{
          gender = "Female";
        }
       return gender;
    }

类中没有设置gender字段的内容。

通常,不应该同时具有isMale变量和gender变量。这是多余的。你可以从另一个派生一个,isMale是一个更好的实现,因为你只有两个状态(这里不试图反跨性别,这只是大多数学生作业中的基本假设)。

最新更新