算法基础(三)---- 计算字符串数字平均值

给定一个字符串,去除最少的数(可能有多个)和最大的数(可能有多个),

然后计算平均值,结果保留一位小数,

如"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);
	}

}





猜你喜欢

转载自blog.csdn.net/u010520912/article/details/48407899