編寫一個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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM