2

我的代码中出现错误(这是我作业的最后一行,我似乎无法解决它),它位于 addStudent 方法中。它说我尝试访问重载的构造函数实际上是在尝试访问默认构造函数,并且没有变量可供我通过。所以,简而言之:

“studentArray[i] = new Student(firstname, lastname, gender, sClass, sID);”

正在尝试访问:

“公共无效学生(){}”

但我希望它访问:

“公共无效学生(字符串名字,字符串姓氏,字符串性别,字符串sClass,字符串sID)”

谢谢您的帮助!

-安德烈斯

public void Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 
{
    setFirstName(firstname);
    setLastName(lastname);
    setGender(gender);
    setClass(sClass);
    setID(sID);
}

public static boolean addStudent(String firstname, String lastname, String gender, String sClass, String sID)
{
    for (int i=0; i<studentArray.length; i++) 
    {
        if (studentArray[i] == null)
        {
            studentArray[i] = new Student(firstname, lastname, gender, sClass, sID);
            totStudent++;
        }else {JOptionPane.showMessageDialog(null, "Max students reached.");}
    }
    return true;
}
4

5 回答 5

4

您正在用 声明您的“构造函数” void,实际上是使它们成为void方法,而不是构造函数。因此,编译器只能使用默认构造函数,这就是您收到该错误的原因。void因此:您应该在尝试定义构造函数的任何地方删除关键字。

于 2012-11-02T00:15:53.037 回答
2

从构造函数中删除void关键字:

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 

改成

public Student(String firstname, String lastname, String gender, String sClass, String sID) 

相似地

public void Student() 

改成

public Student() 

构造函数没有返回类型。

于 2012-11-02T00:16:27.133 回答
1

构造函数没有返回类型,因为当您将它们与 new 关键字一起使用时,它们返回一个与定义它们的类相同类型的新 Object。

对象 o = 新对象();// 你正在调用 Object 构造函数。

-- 编辑 -- 我也建议改变这个

public Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}

public Student() 
{
    this("Unknown", "Unknown", "Unknown", "Freshman", "0000"); 
}
于 2012-11-02T00:19:08.060 回答
0

构造函数没有返回类型,甚至不是 void。你用 void 声明你的构造函数,这将使它们成为方法而不是构造函数

于 2012-11-02T00:17:04.433 回答
0

从构造函数中删除,void不需要调用setter方法。您可以直接访问以下属性:

 public void Student() 
 {
    this.firstName = "Unknown";
    this.lastName = "Unknown";
    this.gender = "Unknown";
    this.class = "Freshman";
    this.ID="0000";
 }

相似地

 public void Student(String firstname, String lastname, 
                                         String gender, String sClass, String sID) 
 {
    this.firstName = firstname;
    this.lastName = lastname;
    this.gender = gender;
    this.class = sClass;
    this.ID=sID;
 }

你应该准备好了。

于 2012-11-02T00:40:16.853 回答