IC 网站建设宁波seo快速优化平台
案例五:评委打分
-
需求:
- 在唱歌比赛中,有6名评委给选手打分,分数范围是 [0-100] 之间的整数。选手的最后得分为:去掉一个最高分、一个最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
-
分析:
-
将6名评委的打分录入到数组中
-
遍历数组中的分数,依次取出累加求和,找出最高分、最低分将其减去。
思路:
(1) 最高分:参照我们之前练过的选美案例——>求最高颜值
(2) 最低分:参数我们之前练过的选美案例,改成选丑——>求最低颜值
-
按照分数的计算规则算出平均分:
-
平均分 = (总分 - 最高分 - 最低分) / (数组长度-2——>相等于是剩下的评委人数)
-
-
实现:
1. 动态初始化一个数组scoresArr,长度为62. 创建一个键盘录入对象,用于评委打分3. 定义一个for循环,循环6次,进行6次打分,每次打分后,将分数录入到scoresArr4. 定义一个求平均分的方法averScore,返回值类型是double,设置一个形参:int[] arr ——>用于接收传入的数组5. 在averScore内:(5.1) 定义个用于记录最高分的变量,建议存储数组中第一个元素作为参照(5.2) 定义个用于记录最低分的变量,建议存储数组中第一个元素作为参照(5.3) 定义个用于分数求和的变量,初始值为0(5.4) 定义一个for循环,遍历接收到的数组: 使用if判断:当遍历到的数据 大于 记录最高分时,则替换最高分 使用if判断:当遍历到的数据 小于 记录最低分时,则替换最低分 统计总分:每遍历到一个数据,用分数求和的变量值累加起来(5.5) 循环结束后,计算平均分:平均分 = (总分 - 最高分 - 最低分) / (数组长度-2) 结果想要保留小数:(总分 - 最高分 - 最低分) * 1.0 / (数组长度-2)(5.6) 返回选手最终得分6. 调用averScore方法,将录入分数后的数组传递给形参 int[] arr 并用变量接收7. 输出选手最终得分
package com.app.demo;import java.util.Scanner;/**案例五:评委打分- 需求:- 在唱歌比赛中,有6名评委给选手打分,分数范围是 [0-100] 之间的整数。选手的最后得分为:去掉一个最高分、一个最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。- 分析:- 将6名评委的打分录入到数组中- 遍历数组中的分数,依次取出累加求和,找出最高分、最低分将其减去。思路:(1) 最高分:参照我们之前练过的选美案例——>求最高颜值(2) 最低分:参数我们之前练过的选美案例,改成选丑——>求最低颜值- 按照分数的计算规则算出平均分:平均分 = (总分 - 最高分 - 最低分) / (数组长度-2——>相等于是剩下的评委人数)*/
public class Test5 {public static void main(String[] args) {// 1. 动态初始化一个数组scoresArr,长度为6int[] scoresArr = new int[6];// 2. 创建一个键盘录入对象,用于评委打分Scanner sc = new Scanner(System.in);// 3. 定义一个for循环,循环6次,for (int i = 0; i < 6; i++) {// i = 0 1 2 3 4 5 ——>6次// 进行6次打分,System.out.println("请第" + (i + 1) + "位评委打分: ");int score = sc.nextInt();// 每次打分后,将分数录入到scoresArrscoresArr[i] = score;}// 6. 调用averScore方法,将录入分数后的数组传递给形参 int[] arr 并用变量接收double result = averScore(scoresArr);// 7. 输出选手最终得分System.out.println("选手的最终得分是: " + result);}// 4. 定义一个求平均分的方法averScore,返回值类型是double,设置一个形参:int[] arr ——>用于接收传入的数组public static double averScore(int[] arr) {// 5. 在averScore内:// (5.1) 定义个用于记录最高分的变量,建议存储数组中第一个元素作为参照int max = arr[0];// (5.2) 定义个用于记录最低分的变量,建议存储数组中第一个元素作为参照int min = arr[0];// (5.3) 定义个用于分数求和的变量,初始值为0int sum = 0;// (5.4) 定义一个for循环,遍历接收到的数组:for (int i = 0; i < arr.length; i++) {// 使用if判断:当遍历到的数据 大于 记录最高分时,则替换最高分if (arr[i] > max) {max = arr[i];}// 使用if判断:当遍历到的数据 小于 记录最低分时,则替换最低分if (arr[i] < min) {min = arr[i];}// 统计总分:每遍历到一个数据,用分数求和的变量值累加起来sum += arr[i];}System.out.println("最高分是: " + max);System.out.println("最低分是: " + min);// (5.5) 循环结束后,计算平均分:// 平均分 = (总分 - 最高分 - 最低分) / (数组长度-2)// 结果想要保留小数:(总分 - 最高分 - 最低分) * 1.0 / (数组长度-2)double result = (sum - max - min) * 1.0/ (arr.length-2);// (5.6) 返回选手最终得分return result;}
}
输出结果:请第1位评委打分:
88
请第2位评委打分:
77
请第3位评委打分:
9
请第4位评委打分:
99
请第5位评委打分:
66
请第6位评委打分:
56
最高分是: 99
最低分是: 9
选手的最终得分是: 71.75
总结
1、如何实现评委打分?
- 定义一个动态初始化数组用于存储评委打的分数
- 定义三个变量用于保存最高分、最低分、求和
- 遍历数组中的每个元素,依次找出最高分、最低分、进行求和
- 遍历结束后按照顺序规则计算出结果即可