题目分析
根据题目要求,推测不需考虑输入值数量为2或以下的情况,不需要考虑无法处理的情况,关键在于以下几点
1. 如何找出最大值和最小值
可以先将录入值传进一个float类型的数组,然后使用两个for循环将最大值和最小值求出来,或使用Arrays.sort()方法,将整个数组按大小顺序排序。
2.如何删除最大值或最小值
无需删除最大值和最小值,只需在计算数值时,将索引 = 0和索引 = length的值跳过就行。
3.如何求绝对值
在求绝对值时可以使用两种思路,一是使用Math.abs()方法,二是先将平均数和最大差值的结果乘方,再使用Math.sqrt()来求绝对值(可以用但没必要)
完整代码
import java.util.Arrays; import java.util.Scanner; public class p2095 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = sc.nextInt(); float[] arr = new float[count]; for (int i = 0; i < count; i++) { arr[i]= sc.nextFloat(); } Arrays.sort(arr); float sum = 0; for (int i = 1; i < arr.length-1; i++) { sum += arr[i]; } float avg = sum/(count-2); System.out.printf("%.2f", avg); float abs=0; for (int i = 1; i < arr.length-1; i++) { if(Math.abs(avg-arr[i])>=abs){ abs = Math.abs(avg-arr[i]); } } System.out.print(" "); System.out.printf("%.2f", abs); } }