编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv

题目:

编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。

定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。

Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;

School 中计算平均分的方法是所有科目的分数之和除以总科目数。

要求:定义ComputerAverage的对象为上转型对象,并调用重写的方法averge。

题目用到:1.方法的多态

思想过程:本来想用动态数组,即ArrayList,但是后来用动态数组做形参传给普通数组时出了问题,因为ArrayList实质是链表,需要用到toArray.虽然我找到了方法但还是不会用.

这里由用户指定数组大小a,再键入分数可能更直观方便.

以下是代码:

 1 import java.util.Scanner;
 2 abstract class ComputerAverage{
 3 abstract double average(int a,double []data);
 4 }
 5 class Gymnastics extends ComputerAverage{
 6 private double avg,max=0,sum=0;
 7 Gymnastics(){
 8 }
 9 double average(int a,double []data){
10 double min=data[0];        //最开始我把min的初值也定义为0,但是如果一组数的最小值比0大,那永远min=0,没有意义.所以把min定为首元素值
11 for(int i=0;i<a;i++){
12 if(data[i]>max)//找出最大值
13 max=data[i];
14 if(data[i]<min)//找出最小值
15 min=data[i];
16 sum+=data[i];
17 }
18 avg=(sum-max-min)/(a-2);
19 return avg;
20 }
21 }
22 class School extends ComputerAverage{
23 private double sum,avg;
24 School(){
25 }
26 double average(int a,double []data){
27 for(int i=0;i<a;i++)
28 sum+=data[i];
29 avg=sum/a;
30 return avg;
31 }
32 }
33 public class Test5_1 {
34 private static Scanner input;
35 public static void main(String args[]){
36 int a;
37 input=new Scanner(System.in);
38 System.out.println("Please enter the number of subjects:");
39 a=input.nextInt();
40 double data[] = new double[a];
41 System.out.println("Please enter grade:");
42 for(int i=0;i<a;i++)
43 data[i]=input.nextDouble();
44 ComputerAverage avg;
45 avg=new Gymnastics();
46 System.out.println(avg.average(a,data));
47 avg=new School();                方法的多态:运行时根据具体对象类型决定函数调用
48 System.out.println(avg.average(a,data));
49 }
50 }
时间: 2024-08-26 12:13:51

编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv的相关文章

【C++】用结构体完成:编程求出3个学生中某个学生的平均成绩

//用结构体完成:编程求出3个学生中某个学生的平均成绩 #include <iostream> #include <string.h> using namespace std; struct student { char *name; double score[3]; }; struct student stu[3]={{"han",80,90,95},{"zhao",78,85,92},{"dan",75,60,59}}

排序方法:去掉最高最低分求平均分 函数

法1 namespace 函数数组排序带出最大最小值及平均值 { class Program { static void Main(string[] args) { int[] b=new int[]{9,1,5,3,7}; int max = 0; //设置两个变量用来接收最低值与最小值. int min = 0; int ave = 0; //设变一个变量来接收平均值. int[]a= new Program().Array(b,out max,out min,out ave); for (

排序方法:去掉最高最低分求平均分

static void Main(string[] args) { double[] a = new double[10]; double sum = 0; for (int i = 0; i < a.Length; i++) { a[i] = Convert.ToInt32(Console.ReadLine()); sum=sum+a[i]; Console.WriteLine("第"+(i+1)+"个评委的分数为"+a[i]); } Console.Wri

15-07-08 数组-- 去掉最低分去掉最高分取平均分

输入同学的分数,去掉两个最高分,去掉两个最低分,求和后取平均分 Console.Write("请输入人数:"); int r = Convert.ToInt32(Console.ReadLine()); int[] cj = new int[r]; if (r >= 5) { for (int i = 0; i < r; i++) { Console.WriteLine("请输入第{0}个人的成绩", i + 1); cj[i] = Convert.To

awk应用-计算学生的平均成绩

让我们来看awk应用的一个例子,其中先对一系列学生的成绩进行相加,然后计算其平均值.下面是输入文件的具体数据: $ cat grades john 85 92 78 94 88 andrea 89 90 75 90 86 jasper 84 88 80 92 84 在学生的姓名后面有5个成绩.下面的脚本将给出每个学生的平均成绩: $ cat grades.awk #求5个成绩的平均值 { total = $2 + $3 + $4 + $5 + $6 avg = total / 5 print $

Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

#34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void printLowercaseLetter():然 后写一个类Print实现接口InterfaceA和InterfaceB,要求      方法 实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文 字母表的功能.再写一个主类E,在主类E的main方法中创建P

Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安 全生产”的抽象方法:abstract void safetyInProduction() (

(一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)

(一).写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight).再写两个子类:红猪的类:类中有属性姓名(name),攻击力(attack),颜色(color).红猪也有一个打人的方法(fight),要求在此方法中输出"XX猪是XX颜色的,打掉了人XX点血".蛇类:类中有属性姓名(name),有攻击力属性(attack),有几条脚属性(foot).蛇也有一个打人的方法(fight),要求在此方法中输出"XX蛇用XX条脚跑到人面前去打人,打

求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。函数为 int same(int num)其中num是输入的整型数字

import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Test { public static void main(String[] args) { /** * 2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123, * 相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0. * 方法是先将整型数字转换到数组中,再判断.