複数名分の生徒情報(名前、ID)を管理し平均年齢を求めるプログラムを書いています。以下のように書いてエラーはないのですが、求めた平均年齢がNaNとなってしまいます。何が間違っているのでしょうか。
public class Main {
public static void main(String[] args) { StudentInfo student = new StudentInfo(); student.addStudents(new Student("Taro Sato","111",21)); student.addStudents(new Student("Akari Kato","112",20)); student.addStudents(new Student("Taizo Hayashi","113",21)); student.addStudents(new Student("Hikari Watanabe","114",22)); double average = StudentInfo.getAverage(); System.out.println("平均年齢:"+ average); }
}
public class Student {
String name =""; //名前 String studentID =""; //学生ID int age ; //年齢 public Object id;
public Student(String name, String id, int age) {
this.name = name;
this.studentID = id;
this.age = age;
}
public String getName(){
return name;
}
public String getId(){
return studentID;
}
public int getage(){
return age;
}
}
public class StudentInfo {
public static int MAX_COUNT=100; //取り扱えるStudentの最大数; static Student[] students = new Student[MAX_COUNT]; //管理するStudent static int studentCount =0; //配列に格納されたStudentの数 private Object id = " "; private String name = null; private int age; //・引数 :student /Student 追加する Student //・戻り値:追加できた時は true, 失敗したときはfalse を返す. //・目的 :StudentInfo 内の配列に Student を追加する.引数の値が null である場合, // 配列で扱 える最大数を超えた場合や,既に同じ情報を持つ Student が登録されている場合は, // 登録されずにfalse を返す. public boolean addStudents(Student student){ //引数にStudent以外のクラスが指定 された時はfalseを返す if(student instanceof Student != true ) return false; students[studentCount] = student; //配列で扱える最大数を超えた場合 if(studentCount > MAX_COUNT || student == null){ return false; } //配列の要素を一つ一つ同じである かどうかを確認し,全て同じであれ ばtrueを返す Student target = (Student)student; if(this.name != target.name || this.id != target.id || this.age != target.age) return true; studentCount ++; return true; } //・引数 :なし //・戻り値:配列に登録されている Studentの平均値 //・目的 :StudentInfo の配列に登録されている Student の平均年齢を算出して返す. // 登録され ている Student がない場合は0 を返す. public static double getAverage(){ double average = 0.0; for(int i=0; i < studentCount; i++) average += students[i].getage(); return average/studentCount; }
}
回答2件
あなたの回答
tips
プレビュー