题目就是输入一个数组,找出这个数组的最大值,最小值和中位数,保证这三个数从大到小输出,而且是整形的整形输出,是小数的保留一位小数。代码如下,评测结果是满分;大体思路如下。如果有问题后期更正。代码就是想到哪里写到哪里,考试没想那么多优化
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();
long[] arr = new long[n];
//为这n个数初始化
for(int i = 0;i<n;i++){
arr[i] = sc.nextLong();
}
sc.close();
//将输入的数字按从小到大的顺序排序
Arrays.sort(arr);
//用一个double类型的数组存储最终的三个结果
//保证了result中存的数字,就是从小到大排的
double[] result = new double[3];
//最大值就是排序好数组的最后一个元素
result[0] = arr[arr.length-1];
//最小值就是排序好数组的第一个元素
result[2] = arr[0];
//主要就是处理中位数
for(int i = 0;i<3;i++){
//result[1]存的就是中位数
if(i==1){
//初始化的数组中的元素是偶数个
if(arr.length%2==0){
//如果中间的两个数可以整除
if((arr[arr.length/2]+arr[arr.length/2-1])%2==0){
result[i] = (arr[arr.length/2]+arr[arr.length/2-1])/2;
//直接打印出来,并强转成整形
System.out.print((long)result[i]+" ");
//如果中间的两个数不能整除
}else{
result[i] = (arr[arr.length/2]+arr[arr.length/2-1])/2.0;
//直接输出double型
System.out.print(result[i]+" ");
}
//初始化的数组是奇数个
}else{
//中间那个数字就是中位数
result[i] = arr[arr.length/2];
//而且要强转成整形
System.out.print((long)result[i]+" ");
}
}else{
//把最大值和最小值强转成long型输出
System.out.print((long)result[i]+" ");
}
}
}
}