给定一个字符串,去除最少的数(可能有多个)和最大的数(可能有多个),
然后计算平均值,结果保留一位小数,
如"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);
}
}