问题 A: 数组搜索——Java

题目描述

从键盘输入整数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;
                }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值