题目要求:定义一个表示学生信息的类,要求如下:(1)学生的属性包括:学号、姓名、性别、年龄和课程成绩(5门课,其中包括Java);(2)创建带参数的构造方法;(3)获取学生的属性信息;(4)根据学生类,创建五个该类的对象,要求对象数组,并打印五个学生的Java课程成绩的平均值,并输出成绩的最大值(分数和学生名)和最小值(分数和学生名)。
实现效果视频:【JAVA】类与对象(实验)_哔哩哔哩_bilibili
思路构建:创建学生属性property类,然后定义对象数组分别记录五个人的成绩,接着构造函数初始化他们的值,然后创建函数分别返回对应的学生名,学号,性别,年龄和课程成绩,再创建一个test测试类创建五个该类的对象,然后计算五个学生的课程成绩平均值,并且默认第一个人的java成绩同时是最大值和最小值,用for循环遍历五个学生的java成绩,比最大值大的将值赋给最大值,最小值同理,得出最大值和最小值。
学生属性类代码如下:
package message;public class property { int num; String name; char gender; int age; double grades[] = new double[5]; property(int a, String b, char c, int d, double e, double f, double g, double h, double i) { this.num = a; this.name = b; this.gender = c; this.age = d; this.grades[0] = e; this.grades[1] = f; this.grades[2] = g; this.grades[3] = h; this.grades[4] = i; } public int getNum() { return num; } public String getName() { return name; } public char getGender() { return gender; } public int getAge() { return age; } public double getChinese() { return grades[0]; } public double getMath() { return grades[1]; } public double getEnglish() { return grades[2]; } public double getJava() { return grades[3]; } public double getC() { return grades[4]; }}
构造函数的形参偷懒用了abcd这种字母,最好还是对应比如num就是num这样,方便主函数赋值时观看数据名称。
test测试类代码如下:
package message;public class test { public static void main(String[] args) { property stu[] = new property[5]; stu[0] = new property(1, "小1", '男', 18, 97, 94, 95, 96, 88); stu[1] = new property(2, "小2", '女', 17, 90, 90, 91, 91, 86); stu[2] = new property(3, "小3", '女', 19, 60, 70, 80, 94, 83); stu[3] = new property(4, "小4", '男', 18, 77, 94, 60, 95, 81); stu[4] = new property(5, "小5", '男', 18, 85, 100, 93, 97, 86.5); double aver = (stu[0].grades[3] + stu[1].grades[3] + stu[2].grades[3] + stu[3].grades[3] + stu[4].grades[3]) / 5; System.out.println("平均值"+aver); double max = stu[0].grades[3]; double min = stu[0].grades[3]; int i = 0, j = 0, k = 0; for (; i < 5; i++) { if (max < stu[i].grades[3]) { max = stu[i].grades[3]; j = i; } } System.out.println("java最高分" + max + stu[j].name); for (i=0; i < 5; i++) { if (min > stu[i].grades[3]) { min = stu[i].grades[3]; k = i; } } System.out.println("java最低分" + min + stu[k].name); }}
运行结果:
测试类中创建了对象数组,并对这几个数组元素赋值,包括学号,名字,性别和五门课的成绩。
在计算java成绩的最大值和最小值时,将第一个同学的java成绩同时设为最大值和最小值,再遍历所有数组元素,每次遇到java成绩比这个值高的就改变最大值,最小值同理。
可以更改的部分:在测试类中,每次使用成绩都是直接引用学生属性类property的成员变量,其实也可以调用设置的获取成绩方法,如求成绩平均值时就可以调用stu[0].getJava()来返回这个学生的java成绩。
来源地址:https://blog.csdn.net/ArliaOnly/article/details/130034005