Java 我的程序上的常见错误(多态性/重写/继承)

Java 我的程序上的常见错误(多态性/重写/继承),java,inheritance,polymorphism,abstraction,Java,Inheritance,Polymorphism,Abstraction,嗨,我知道你可以很容易地找到这里的错误,我需要帮助来解决这个问题 我很想找出我的代码出了什么问题,我正试图解决它,但当我试图改变一些东西时,它变得很复杂 以下是我当前的代码: package copro; public class QuizInherit { public static void main(String[] args){ students persons[] = new students[3]; persons[0] = new st

嗨,我知道你可以很容易地找到这里的错误,我需要帮助来解决这个问题 我很想找出我的代码出了什么问题,我正试图解决它,但当我试图改变一些东西时,它变得很复杂

以下是我当前的代码:

 package copro;

public class QuizInherit {
    public static void main(String[] args){

        students persons[] = new students[3];
        persons[0] = new students("Vincent","Dimalanta",90,85,80);
        persons[1] = new students("Daryl", "De Guzman", 95, 92, 91);
        persons[2] = new students("Jayson", "Elizaga", 88, 87, 86);

        for (students person : persons) {
            person.print();
        }
    }

    public class students extends Calculations {

        private String firstname;
        private String lastname;

        public students(String firstname, String lastname, int Grade1,
                int Grade2, int Grade3) {
            super(Grade1, Grade2, Grade3);
            this.firstname = firstname;
            this.lastname = lastname;
        }

        public void print() {
            System.out.println("FirstName: " + firstname);
            this.print();
            System.out.println("LastName: " + lastname);
            this.print();
            this.getAve();
        }
    }

    public class Calculations {

        private int Grade1;
        private int Grade2;
        private int Grade3;
        private double ave;

        public Calculations(int Grade1, int Grade2, int Grade3) {
            this.Grade1 = Grade1;
            this.Grade2 = Grade2;
            this.Grade3 = Grade3;
            this.ave = ave;
        }

        public void getAve() {
            ave = (Grade1 + Grade2 + Grade3) / 3;
        }

        public void print() {
            System.out.println("Student Details: ");
            this.print();
            System.out.println("Grade1: " + Grade1);
            System.out.println("Grade2: " + Grade2);
            System.out.println("Grade3: " + Grade3);
            System.out.println("The average is: " + ave);
        }

    }
}
错误在这里:

persons[0] = new students("Vincent","Dimalanta",90,85,80);
我希望你能帮助我,我知道这是一个非常简单的问题,但对我来说很难,因为我目前是编程界的初学者

多谢各位

for (students person : persons) {
        person.print();
    }
上述代码调用

`public void print() {
     System.out.println("FirstName: " + firstname);
     this.print();
     System.out.println("LastName: " + lastname);
     this.print();
     this.getAve();
 }`

它通过
this.print()
递归调用
print()
。这可能会造成堆栈溢出

查找错误的最佳方法是读取错误消息。由于没有发布这些准确完整的错误消息,您使我们更加困难。也就是说,现在请遵循以下简单规则:每个Java文件一个类。不要在其他类中定义类。稍后您将了解内部类,其中之一是递归调用print()方法。这里有一个堆栈溢出。this.ave=ave;因为ave是零,所以它是无意义的。像“getAve”这样的方法名应该用于返回字段的内容。可以在构造函数中计算平均值。