搭建流水线,即建立一个类,该类同时组合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
请输入各评委的分数:
99
12
56
去掉一个最高分:99.0,
去掉一个最低分:12.0。
选手最后得分:56.0