题目描述
从键盘输入整数n(5=< n <= 100),然后依次输入n个整数,存放在整数数组alist。
查找alist数组中的最接近数组平均值(即与平均值的差的绝对值最小)的元素及其下标(如果存在多个满足条件的元素,则只输出下标最大的元素及其下标).
输入
整数n(5=< n <= 100),然后依次输入n个整数。
输出
alist数组中的最接近平均值的元素及其下标(如果存在多个满足条件的元素,则只输出下标最大的元素及其下标)
样例输入
5 3 2 1 4 -9
样例输出
a[2]=1
提示
注意:尽管数组元素为整数;此时数组元素平均值可能为 浮点数!!
import java.text.DecimalFormat;
import java.util.*;
public class Main{
public static String div(int a,int b){//定义一个除法程序
DecimalFormat df = new DecimalFormat("0.00000000");
return df.format((float)a/b);
}
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
if(5 <= n && n<= 100){
int []a = new int [n];
int sum = 0;
for(int i=0;i<n;i++) {
a[i] = reader.nextInt();
sum+=a[i];
}
float avg = Float.parseFloat(div(sum,n));//平均值
float min = Math.abs(a[0]-avg);//初始化最小值
for(int i=0;i<n;i++)//寻找最小值
if(min > Math.abs(a[i]-avg))//绝对值
min = Math.abs(a[i]-avg);
for(int i=n-1;i>-1;i--)//遍历数组找最小值及下标
if(min == Math.abs(a[i]-avg)){
System.out.printf("a[%d]=%d",i,a[i]);
break;
}
}
}
}