• 编写一个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 }
  • 相关阅读:
    virtualbox 5.0.6 在debian jessie amd64启动报错
    golang中的检验hash
    删除多余的自编译的内核、mysql连接不了的问题
    scoket常用函数简单介绍
    我的bootstrap学习
    TCP/IP四层模型和OSI七层模型
    五种调试方法
    实现对一个8bit数据的指定位的置0或者置1操作,并保持其他位不变。
    如何测试一个杯子
    黑白盒测试及区别、测试用例的设计(测试小笔记)
  • 原文地址:https://www.cnblogs.com/silenTJ/p/7786866.html
Copyright © 2020-2023  润新知