给定一个字符串,去除最少的数(可能有多个)和最大的数(可能有多个),
然后计算平均值,结果保留一位小数,
如"0,11,0,10,33,44,10,98,67,87,98",结果是37.4
package other; import java.text.DecimalFormat; import java.util.ArrayList; public class test2 { static String str = "0,11,0,10,33,44,10,98,67,87,98"; public static void main(String args[]) { System.out.println(getAverage(str)); } public static String getAverage(String str) { // 将字符串转为数组 String[] arrStr = str.split(","); int[] arr = new int[arrStr.length]; for (int i = 0; i < arrStr.length; i++) { arr[i] = Integer.parseInt(arrStr[i]); } // 用冒泡算法将数组进行排序 for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } // 去掉多个最大的数和最小的数 ArrayList<Integer> resultArr = new ArrayList<Integer>(); for (int i = 1; i < arr.length - 1; i++) { if (arr[i] != arr[0] && arr[i] != arr[arr.length - 1]) { resultArr.add(arr[i]); } } double result = 0; for (Integer i : resultArr) { result += i; } // 保留一位小数 DecimalFormat df = new DecimalFormat("0.0"); return df.format(result / resultArr.size()); } }
package test; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; public class GetAverage { static String str = "0,11,0,10,33,44,10,98,67,87,98"; public static void main(String args[]) { System.out.println(getAverage(str)); } public static String getAverage(String str) { // 将字符串转为数组 String[] arrStr = str.split(","); ArrayList<Integer> arr = new ArrayList<Integer>(); for (int i = 0; i < arrStr.length; i++) { arr.add(Integer.parseInt(arrStr[i])); } Collections.sort(arr); // 去掉最大的数和最小的数 for (int i = 1; i < arr.size() - 1; i++) { if (arr.get(i) == arr.get(0) || arr.get(i) == arr.get(arr.size() - 1)) { arr.remove(i); } } arr.remove(0); arr.remove(arr.size() - 1); double result = 0; for (Integer i : arr) { result += i; } // 保留一位小数 DecimalFormat df = new DecimalFormat("0.0"); return df.format(result / arr.size()); } }
package test; import java.text.DecimalFormat; public class GetAverage { static String str = "0,11,0,10,33,44,10,98,67,87,98"; public static void main(String args[]) { System.out.println(getAverage(str)); } public static String getAverage(String str) { String[] s = str.split(","); int min = Integer.parseInt(s[0]); int min_nElems = 1; int max = min; int max_nElems = 1; int tem; double result = min; // 找出最大和最少的元素及统计其个数 for (int i = 1; i < s.length; i++) { tem = Integer.parseInt(s[i]); result += tem; if (tem <= min) { if (tem == min) { min_nElems++; } else { min = tem; min_nElems = 1; } } if (tem >= max) { if (tem == max) { max_nElems++; } else { max = tem; max_nElems = 1; } } } result = (result - min * min_nElems - max * max_nElems) / (s.length - min_nElems - max_nElems); DecimalFormat format = new DecimalFormat("0.0"); return format.format(result); } }