题目描述
现在有 n(n≤1000)n(n≤1000) 位评委给选手打分,分值从 00 到 1010。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 22 位小数。
输入格式
第一行输入一个正整数 n,表示有 n 个评委。
第二行输入 n 个正整数,第 i 个正整数表示第 i 个评委打出的分值。
输出格式
输出一行一个两位小数,表示选手的最后得分。
输入输出样例
输入 #1复制
5 9 5 6 8 9输出 #1复制
7.67
//第一种:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
//打分
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
double sum=0;
int arr[]=new int[n];
for (int i=0;i<n;i++){
arr[i]=sc.nextInt();
sum=sum+arr[i];
}
Arrays.sort(arr);
double min=arr[0];
double max=arr[n-1];
sum=(sum-min-max)/(n-2);
System.out.printf("%.2f",sum);
}
}
//第二种调用方法Math.max .min
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//打分解法二
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int maxn = 0;
int minn = 1001;
double sum = 0;
for (int i = 1; i <= n; i++) {
int m = sc.nextInt();
maxn = Math.max(maxn, m);
minn = Math.min(minn, m);
sum += m;
}
sum = sum - (maxn + minn);
System.out.printf("%.2f", sum / (n - 2));
}
}