要求:
青歌赛选手评分(10分为满分)程序(求和【去除最大值和最小值】、求最大值、求最小值),提取出方法实现。
分析:需要判断两个合法性,第一个是评委人数要大于二,,第二个数评分要在0-10之间
根据题目要求,需要有三个方法(求最大值,求最小值,求和)
完整代码:
import java.util.Scanner; public class scores { /** * @Description 青赛歌选手评分程序 * @param args * @author wjs 2024.3.11 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入评委的人数:"); int num = sc.nextInt(); //判断评委人数合法性 while (num<=2){ System.out.println("输入的评委人数有错误,请重新输入"); num = sc.nextInt(); } int[] scores = new int[num]; System.out.println("请输入评委分数:"); int sum = getSum(scores); //平均分数 float ave = (float)(sum-getMax(scores)-getMin(scores))/(float)(num-2); System.out.printf("最终分数%.2f",ave); } /** * @Description 计算数组的最大值 * @param arr * @return max * @author wjs 2024.3.11 */ public static int getMax(int arr[]){ //遍历数组,求出最大值; int max = arr[0]; for (int i = 0; i < arr.length; i++) { if (max<arr[i]){ max = arr[i]; } } return max; } /** * @Description 求最小值 * @param arr * @return min * @author wjs 2024.3.11 */ public static int getMin(int arr[]){ //遍历数组,求出最大值; int min = arr[0]; for (int i = 0; i < arr.length; i++) { if (min>arr[i]){ min = arr[i]; } } return min; } /** * @Description 求数组的和 * @param arr * @return sum * @author wjs 2024.3.11 */ public static int getSum(int arr[]){ Scanner sc = new Scanner(System.in); int sum = 0; //存储评委分数,并且计算总分 for ( int i = 0; i < arr.length; i++) { //判断分数合法性0~10 arr [i]= sc.nextInt(); while (arr[i]<0||arr[i]>10){ System.out.println("分数不正确,不予录入,需要重新输入"); arr [i]= sc.nextInt(); } sum +=arr[i]; } return sum; } }