一个搭建流水线求唱歌比赛最终得分的例子

来源:互联网 发布:relieff算法 编辑:程序博客网 时间:2024/05/08 12:54

搭建流水线,即建立一个类,该类同时组合a,b,c三个对象。流水线的作用是,用户只需要将套处理的数据交给流水线,流水线就会依次让流水线上的对象来出来数据。即流水线上首先由对象a处理数据,a处理完后,自动将出来的数据交给b,b处理数据后,自动将处理的数据交给c。比如,在歌手比赛中,只需要将评委给出的分数交给设计好的流水线,就可以得到选手的最后的分,流水线上的第一个对象负责录入裁判给选手的分数,第二个对象负责去掉一个最高分和一个最低分,最后一个对象负责计算出平均成绩,这样一个流水线的流程就走下来了。

对象a,负责录入成绩

package Example5;import java.util.Scanner;//对象a负责录入成绩public class InputScore {    DelScore del;    InputScore(DelScore del) {        this.del = del;    }    public void inputScore() {        System.out.println("当前评委数:");        Scanner scanner = new Scanner(System.in);        int count = scanner.nextInt();        System.out.println("请输入各评委的分数:");        double []a = new double[count];        for(int i=0;i<count;i++){            a[i] = scanner.nextDouble();        }        del.dodelete(a);    }}

类b,负责去掉最高分和最低分

package Example5;//去掉最低分和最高分public class DelScore {    ComputerAver computerAver;    DelScore(ComputerAver computerAver) {        this.computerAver = computerAver;    }    public void dodelete(double []a){        java.util.Arrays.sort(a);//排序        System.out.println("去掉一个最高分:" + a[a.length-1] + ",");        System.out.println("去掉一个最低分:" + a[0] + "。");        double b[] = new double[a.length-2];        for(int i=1;i<a.length-1;i++){            b[i-1] = a[i];        }//注意哪些存在哪些不存在;        computerAver.giveAver(b);    }}

类c,负责统计最后分数

package Example5;public class ComputerAver {    public void giveAver(double []b){        double sum = 0,aver = 0;        for(int i=0;i<b.length;i++){            sum+= b[i];            }        aver = sum/(b.length);        System.out.println("选手最后得分:" + aver);    }}

调用各个类

package Example5;public class Line {    InputScore one;    DelScore two;    ComputerAver three;     Line() {         three = new ComputerAver();         two = new DelScore(three);         one = new InputScore(two);     }     public void givaPersonScocer(){         one.inputScore();     }}

主函数

package Example5;public class SingGame {    public static void main (String args[]){        Line line = new Line();        line.givaPersonScocer();    }}

调试结果:

当前评委数:3请输入各评委的分数:991256去掉一个最高分:99.0,去掉一个最低分:12.0。选手最后得分:56.0
0 0
原创粉丝点击