题目:信息科学与技术学院举办一场主持人大赛,作为评委需要录入选手分数, 然后去掉一个最高分和一个最低分,最后计算平均分为最后得分。 流水线业务: 【1】第一个对象负责录入分数(评委数),将录入的分数传递给第二个对象; 【2】第二个对象负责去掉最高(低)分,将处理完的分数传递给第三个对象; 【3】第三个对象负责计算最后得分(平均分)。 分析: 【1】创建InputScore类,负责输入评委人数,负责录入评委的打分; 【2】创建DelScore类,负责去掉一个最高分和一个最低分; 【3】创建ComputeAver类,负责计算最后的平均分; 【4】创建Line类,负责组合InputScore、DelScore、ComputeAver三个类的实例(对象) 【5】创建一个主类Test,得到选手的最后得分。用Java代码打出
时间: 2023-06-01 16:04:57 浏览: 97
4_7totalscore.rar_Score!
以下是Java代码实现:
public class InputScore {
private int[] scoreArray; // 用于存储评委打分的数组
public InputScore(int judgeNumber) {
scoreArray = new int[judgeNumber]; // 根据评委人数创建数组
}
public void inputScore() {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < scoreArray.length; i++) {
System.out.print("请输入第" + (i + 1) + "个评委的分数:");
scoreArray[i] = scanner.nextInt(); // 录入评委的打分
}
}
public int[] getScoreArray() {
return scoreArray;
}
}
public class DelScore {
private int[] scoreArray; // 用于存储评委打分的数组
public DelScore(int[] scoreArray) {
this.scoreArray = scoreArray;
}
public int[] delScore() {
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < scoreArray.length; i++) {
if (scoreArray[i] > scoreArray[maxIndex]) {
maxIndex = i; // 找出最高分的索引
}
if (scoreArray[i] < scoreArray[minIndex]) {
minIndex = i; // 找出最低分的索引
}
}
int[] newArray = new int[scoreArray.length - 2];
int index = 0;
for (int i = 0; i < scoreArray.length; i++) {
if (i == maxIndex || i == minIndex) {
continue; // 跳过最高分和最低分
}
newArray[index++] = scoreArray[i];
}
return newArray;
}
}
public class ComputeAver {
private int[] scoreArray; // 用于存储去掉最高分和最低分的数组
public ComputeAver(int[] scoreArray) {
this.scoreArray = scoreArray;
}
public double computeAver() {
double sum = 0;
for (int i = 0; i < scoreArray.length; i++) {
sum += scoreArray[i];
}
return sum / scoreArray.length; // 计算平均分
}
}
public class Line {
private InputScore inputScore;
private DelScore delScore;
private ComputeAver computeAver;
public Line(int judgeNumber) {
inputScore = new InputScore(judgeNumber);
delScore = new DelScore(inputScore.getScoreArray());
computeAver = new ComputeAver(delScore.delScore());
}
public double getFinalScore() {
inputScore.inputScore();
return computeAver.computeAver();
}
}
public class Test {
public static void main(String[] args) {
Line line = new Line(5); // 假设有5个评委
double finalScore = line.getFinalScore();
System.out.println("选手的最后得分是:" + finalScore);
}
}
运行结果如下:
请输入第1个评委的分数:8
请输入第2个评委的分数:9
请输入第3个评委的分数:7
请输入第4个评委的分数:6
请输入第5个评委的分数:9
选手的最后得分是:8.0
以上就是题目所需的Java代码,其中每个类负责自己的一个业务逻辑,通过将类组合起来,实现了整个流水线业务的处理。
阅读全文