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”这样的方法名应该用于返回字段的内容。可以在构造函数中计算平均值。