Java “构造函数错误”;对该语句的调用必须是构造函数中的第一个语句;
我正在为一个学校作业写一些代码,我不知道为什么我会不断得到编译错误:“调用这个必须是构造函数中的第一个语句。”我应该创建一个名为student的学生,而不是输入的名称Java “构造函数错误”;对该语句的调用必须是构造函数中的第一个语句;,java,Java,我正在为一个学校作业写一些代码,我不知道为什么我会不断得到编译错误:“调用这个必须是构造函数中的第一个语句。”我应该创建一个名为student的学生,而不是输入的名称 public void newStudent( ){ this("Student"); //Error occurs here ^ } public void newStudent(String student) { studentAndStatus[studentCount] [0] = student;
public void newStudent( ){
this("Student");
//Error occurs here ^
}
public void newStudent(String student)
{
studentAndStatus[studentCount] [0] = student;
for(int i = 0; i < 3; i++)
{
grades[studentCount] [i] = 0;
}
studentCount++;
}
public void newStudent(){
该(“学生”);
//这里发生错误^
}
公共无效新闻学生(字符串学生)
{
studentAndStatus[studentCount][0]=学生;
对于(int i=0;i<3;i++)
{
成绩[学生人数][i]=0;
}
studentCount++;
}
我假设newStudent()
是一个重载的方法,因为构造函数不能有返回类型
this(arguments)
只能用于构造函数调用,但您正在重载newStudent()
方法,因此,如果您想调用newStudent(String student)
,可以按如下所示进行操作:
public void newStudent( ){
newStudent("Student");//calls the overloaded method
}
当您想要创建类的实例时,应该使用构造函数。例如,构造函数与类具有相同的名称,并且没有声明返回类型
public class Student {
public Student() {
this("Student");
}
public Student(String name) {
//Whatever you want to do...
}
}
在您的情况下,会发生错误,因为您只能在构造函数中调用
this
。由于您的类可能未被调用newStudent
,并且方法newStudent()
具有返回类型,因此方法newStudent()
不是构造函数,因此无法调用此
。即使它被调用newStudent
,也存在void
@chrylis您是对的,我相应地更新了答案。非常感谢。谢谢你的帮助!我通过将此(“学生”)切换为newStudent(“学生”)解决了这个问题。它也需要是静态的。为什么它应该是静态的?如果newStudent()
是一个工厂方法,那么它需要(1)返回类(例如Student
),而不是void;(2)它应该是静态的,除非它是一种专门创建一个与现有学生有某种关系的新学生的方法。如果newStudent
有其他用途,那么这不适用,但似乎OP正试图这么做,也许。我不知道,因为newStudent
不是一个足以说明方法用途的描述性名称。你能为整个类添加代码吗?