我是Java的新手,所以我不确定我的代码到底是什么问题。我继续得到一个未解决的编译问题:构造函数Student()未定义。我一直在努力工作几个小时,但我不确定是什么问题。我很感激你的帮助。谢谢!
答案 0 :(得分:1)
您正确创建了构造函数:
public Student (String n, char g, Date b, Preference p){
name = n;
gender = g;
birthDay = b;
pref = p;
}
但是,此构造函数仅适用于所有给定的参数。您正在尝试将没有参数的Student对象创建到构造函数中。这种情况称为默认构造函数。
要制作这样的构造函数,你可以这样做:
public Student (){
//some default initializations
}
答案 1 :(得分:1)
您正在使用
实例化学生new Student()
这是错误的,因为您尚未定义不带参数的构造函数。
您可以通过定义新构造函数来修复它
public Student(){
//Set default values here
}
或者使用你已经拥有的构造函数。
Student bestStudent = new Student("Bryan", 'm', ...);
答案 2 :(得分:1)
当您没有定义类时,Java为类提供了默认构造函数(在本例中为Student())。但是,由于定义了构造函数Student(String s,char c,Date d,Preference p),因此不会自动提供此默认构造函数。
您现在必须使用您指定的构造函数。或者在Student类中实现一个不接受参数的构造函数
public Student() { }
您可以使用它来使用默认变量调用其他构造函数。
public Student() {
this("", '', null, null); //Assuming you code is made to handle such a situation
}
答案 3 :(得分:0)
您正在调用没有参数的新Student()。这称为默认构造函数。如果没有其他构造函数,则不必指定默认构造函数。但是如果你有另一个带参数的构造函数,那么你必须指定它。
您只需将其添加到学生班。
public Student(){
}
答案 4 :(得分:0)
您需要传递n
,g
,b
,p
的值。
所以new Student("hi", 'a', new Date(), myPreference)
答案 5 :(得分:0)
将另一个名为no-argument constructor的构造函数添加到学生班级。因为在for
循环中你使用的是没有任何参数的循环。而你还没有在Student课程中定义它。
只需添加以下行。
public Student() {
}
答案 6 :(得分:0)
在Student()中初始化变量时,它们应该有修饰符:
private String name;
private char gender;
private Boolean matched;
等;这可能是导致错误的原因。
答案 7 :(得分:0)