2016-11-24 13 views
0

私は自分のコードで問題を見つけようとしています。基本的には、プログラムはGPA計算機であるはずです。Javaオブジェクトとクラス - 私のコードに問題がありますか?

最初の部分:

import java.io.*; 
import java.util.ArrayList; 

public class Student { 
    // Data 
    private String name; 
    private int student_id; 
    private double gpa; 
    private ArrayList<Integer> grades; 
    private int num_courses; 

    // Methods 
    // Constructor Method 
    public Student() { 
     name = ""; 
     student_id = 0; 
     gpa = 0.0; 
     grades = new ArrayList<Integer>(); 
    } 

    // Accessor Methods (getters and setters) 
    public void setGrade(int g) { 
     grades.add(g); 
     calcGPA(); 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getStudent_id() { 
     return student_id; 
    } 

    public void setStudent_id(int student_id) { 
     this.student_id = student_id; 
    } 

    public double getGPA() { 
     return gpa; 
    } 

    public void setGpa(double gpa) { 
     this.gpa = gpa; 
    } 

    public int getNum_courses() { 
     return num_courses; 
    } 

    public void setNum_courses(int num_courses) { 
     this.num_courses = num_courses; 
    } 

    // Functional Methods 
    public void calcGPA() { 
     int sum_grades = 0; 
     for (int i=0; i<this.grades.size(); i++) { 
      sum_grades = sum_grades * this.grades.get(i); 
     } 
     gpa = sum_grades/this.grades.size(); 
    } 

    public void displayGrades() { 
     for (int i=0; i<this.grades.size(); i++) { 
      System.out.println("Grade in course " + i + ": " + this.grades.get(i)); 
     } 
    } 
} 

及び第二のクラス:として

import java.io.*; 

public class TestStudent { 
    public static void main(String[] args) { 
     Student s1 = new Student();   //Object creation/instantiation 
     s1.setName("John Rodgers"); 
     s1.setStudent_id(111); 
     s1.setGrade(3); 
     s1.setGrade(4); 
     s1.setGrade(3); 
     System.out.println("Student " + s1.getName() + "\'s GPA: " + s1.getGPA()); 

     Student s2 = new Student(); 
     s2.setName("Jenny Marshall"); 
     s2.setStudent_id(333); 
     s2.setGrade(4); 
     s2.setGrade(4); 
     s2.setGrade(3); 
     s2.setGrade(4); 
     s2.setGrade(3); 
     System.out.println("Student " + s2.getName() + "\'s GPA: " + s2.getGPA()); 
    } 
} 

出力が示す:

Student John Rodgers's GPA: 0.0 
Student Jenny Marshall's GPA: 0.0 

GPAを計算することになっているが、それはのように表示され0.0

+1

は 'calcGPA()'メソッドを取り除きます。代わりに 'getGPA()'メソッド内でそれらの計算を行い、それを返します。 –

答えて

2

あなたcalcGPA()論理は、以下に示すように、むしろあなたがすべての成績を合計する必要があり、(あなたは0で製品をやっている)が正しくありません:

public void calcGPA(){ 
    int sum_grades = 0; 
    for(int i=0; i<this.grades.size(); i++){ 
     sum_grades = sum_grades + this.grades.get(i);//sum the grades 
    } 
    gpa = sum_grades/this.grades.size(); 
} 
関連する問題