求解答。输出结果一直无法显示成绩。
已知专业班级类(Majorclass)含有班级名称(className)和学生名单(studentList-Student对象数组)、学生人数(count)、课程单(courseList-String数组)等成员变量,以及部分成员方法,现在主类中声明一个含3位同学的班级,并设置好课程单数据,输入每位同学的成绩,求各科的平均分,运行效果如下。
import java.util.Scanner;
class Student
{ private String name; //姓名
private int age=16; //年龄
private int score[]; //各门课程成绩
private int totalScore; //总分
public Student() //构造方法
{ name=new String("Noname");
score=new int[5];
}
public Student(String name,int age)//构造方法
{ this();
this.name=name;
this.age=age;
}
public void setName(String name) //设置姓名
{ this.name=name; }
public void setAge(int age) //设置年龄
{ this.age=age;}
public void setScore(int id,int sc) //设置第id门课程的成绩
{ if(id>=0 && id[id]=sc;
}
public String getName() //获取姓名
{ return name; }
public int getAge() //获取年龄
{ return age; }
public int getScore(int id) //获取第id门课程成绩
{ if(id>=0 && id[id];
else
return -1;
}
public void scoreSum() //计算总分
{ int i,sum=0;
for(i=0;i[i];
totalScore=sum;
}
public double scoreAverage() //获取平均分
{ return 1.0*getTotalscore()/score.length;}
public int getTotalscore() //获取总分
{ scoreSum();
return totalScore;
}
public void printInfo() //输出信息
{ System.out.println(String.format("Name:%s,Age=%d",name,age));
for(int i=0;iSystem.out.println(String.format("Course%d:%d",i+1,score[i]));
System.out.println(String.format("ScoreAver=%.2f",scoreAverage()));
}
public int getScoreCount() //获取课程门数
{ return score.length; }
}
class Majorclass
{ String className; //班级名称
Student studentList[ ]; //学生名单
int studentCount; //班级学生人数
public Majorclass() //构造方法
{ className=new String("Noname");}
public Majorclass(String className,int count,String name[ ],int age[ ]) //构造方法
{ this();
this.className=className;
this.studentCount=count;
studentList=new Student[studentCount]; //实例化学生数组
for(int i=0;i[i]=new Student(); //实例化学生数组元素
}
public void setClassname(String className) //设置班级名称
{ this.className=className; }
public void inputCourseScore(int id,Scanner sc) //输入所有学生第id门课程成绩
{ //Scanner sc = new Scanner(System.in);
int score;
if(id[0].getScoreCount()) //id有效判断
for(int i=0;iInt();
studentList[i].getScore(id) ;
}
else
System.out.println("Course id is error!");
}
public void printStudentInfo() //输出班级学生信息
{ for(int i=0;i[i].printInfo();
}
public double getCourseAverage(int id) //获取第id门课程成绩的平均分
{ int sum=0;
if(id[0].getScoreCount())
{ for(int i=0;i[i].getScore(id);
return 1.0*sum/studentCount;
}
else
return -1;
}
}
public class Sy6_1_4
{ public static void main(String[] args)
{ Scanner sc = new Scanner(System.in);
String sname[]={"Kate","Mary","John"}; //准备学生姓名清单
int age[]={16,17,18}; //准备学生年龄清单
Majorclass cla=new Majorclass("Coputer2019",3,sname,age); //实例化班级对象
for(int i=0;i<5;i++) //输入所有学生5门课程的成绩
cla.inputCourseScore(i,sc);
cla.printStudentInfo(); //输出所有学生的信息
for(int i=0;i<5;i++) //输出所有课程的平均分
System.out.println("Average of Course"+(i+1)+":"+cla.getCourseAverage(i));
}
}
score=sc.nextInt();
studentList[i].getScore(id) ;
没有赋值啊
studentList[i].getScore(id).setScore(score);
getTotalScore 注意大小写
参考GPT和自己的思路:
在Majorclass类中的inputCourseScore方法中,当输入每个学生的成绩时,应该调用对应学生的setScore方法来设置成绩,而不是调用getScore方法。因此,将下面这行代码:
studentList[i].getScore(id) ;
改为:
studentList[i].setScore(id, score);