A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滴水石穿 中级黑马   /  2014-12-17 15:01  /  1256 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问,我 在一个数组里面如何求得除去最大值和最小值意外的平均值?
例如像这样的数组:
         int[]arr = {1,4,5,10,9}; 应输出的是6

12 个回复

倒序浏览
数组排序;求数组除去首尾两个元素的和;和除以数组长度减去2,即是结果。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
使用Arrays将数组转换成List集合;对List集合按自然顺序排序;求集合中除去首位两个元素的和;和除以集合长度减去2,即是结果。
回复 使用道具 举报
本帖最后由 任我行 于 2014-12-17 16:07 编辑
  1. public class Test11
  2. {
  3.         public static void main(String[] args)
  4.         {                 
  5.          
  6.                 //先将数组排序
  7.                  int[] arr = {1,4,5,10,9};
  8.                   for(int i=0;i<arr.length-1;i++)
  9.                   {
  10.                            for(int j=0;j<arr.length-1-i;j++)
  11.                            {
  12.                             if(arr[j]>arr[j+1])
  13.                             {
  14.                              int temp=arr[j];
  15.                              arr[j]=arr[j+1];
  16.                              arr[j+1]=temp;
  17.                             }
  18.                            }
  19.                   }
  20.                    for(int i=0;i<arr.length;i++)
  21.                    System.out.print ( arr[i] +" ");
  22.                  
  23.                    //去数组元素最小和最大后 求平均值
  24.                    double sum=0.0;
  25.            for (int i=1; i<arr.length-1; i++)   
  26.                 sum += arr[i];
  27.            System.out.println("去数组元素最小和最大后 求平均值:"+sum/arr.length);
  28.         }
  29. }
复制代码
回复 使用道具 举报

谢谢您 非常感谢
回复 使用道具 举报
HelloWorld! 发表于 2014-12-17 15:13
使用Arrays将数组转换成List集合;对List集合按自然顺序排序;求集合中除去首位两个元素的和;和除以集合长 ...

谢谢您,我只是没遇见过,除去最大值和最小值之后求平均值
回复 使用道具 举报

不是去除数组里的 1元素 和10元素吗?为什么结果是5.8?
回复 使用道具 举报
edidada 中级黑马 2014-12-17 16:02:46
8#
  1. public class Sort {

  2.         public static void main(String[] args) {
  3.                 int[]arr = {1,4,5,10,9};
  4.                 int min=arr[0], max=arr[0]=0,sum=0;
  5.                 for(int a:arr){
  6.                         sum+=a;
  7.                         if(a<min)
  8.                                 min=a;
  9.                         if(a>max)
  10.                                 max=a;
  11.                 }
  12. //                System.out.println(max);
  13. //                System.out.println(min);
  14.                 System.out.println((sum-min-max)/(double)(arr.length-2));
  15.         }

  16. }
复制代码


回复 使用道具 举报
滴水石穿 发表于 2014-12-17 16:01
不是去除数组里的 1元素 和10元素吗?为什么结果是5.8?

对不起  上面有点错,改一下
//去数组元素最小和最大后 求平均值
                   double sum=0.0;
           for (int i=1; i<arr.length-1; i++)  //将小标为0和小标为length-1的去掉
                sum += arr;

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
for (int x = 0,x<arr.lenth(),x++)
回复 使用道具 举报
使用Arrays工具类,直接进行排序,去头去尾就OK了,然后平均值,这是最简单的。。
回复 使用道具 举报
Rain2692 发表于 2014-12-17 18:39
使用Arrays工具类,直接进行排序,去头去尾就OK了,然后平均值,这是最简单的。。 ...

好的,谢谢您
回复 使用道具 举报
任我行 发表于 2014-12-17 16:06
对不起  上面有点错,改一下
//去数组元素最小和最大后 求平均值
                   double sum=0.0;

恩恩 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马