2015-02-08 50 views
-2

嗨,我知道你可以很容易地找到这里的错误,我需要帮助解决这个问题 我很累找到我的代码有什么问题,米试图修复它,但它变得复杂时,我尝试改变一些东西我的程序常见错误(多态/覆盖/继承)

这里是我目前的代码:

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); 

我希望哟ü将帮助我,我知道这是很简单的问题,但它对于我来说很难,因为我目前初学者到编程世界

谢谢

+2

查找错误的最佳方法是读取错误消息。通过不发布这些完全和完整的错误消息,你对我们来说变得更加困难。也就是说,现在遵循这些简单的规则:每个Java文件一个类。不要在其他类中定义类。稍后您将会了解内部类。 – 2015-02-08 17:49:31

+2

其中之一就是递归调用print()方法。这里有一个堆栈溢出。 – TEK 2015-02-08 17:49:36

+0

this.ave = ave;因为爱是零是毫无意义的。类似“getAve”的方法名称应该用于返回字段的内容。平均值可以在构造函数中计算。 – laune 2015-02-08 18:11:14

回答

0
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(); 
}` 

递归调用print()this.print()。这可能会创建stackoverflow