一、思路:
1、第一步由用户输入数据并存入数组,要输入多少个数据,需要给出提示。
2、第二步统计平均数。需要遍历整个数组。
3、第三步继续遍历数组,将每个数和平均数进行比较。
4、由于2、3都涉及到遍历数组,所以在找出平均数及比较两个步骤方面,有两种方式。
第一种:
(1)、遍历整个数组求出平均数。
(2)、遍历整个数组,输出比平均数大的数。
第二种:
(1)、在遍历整个数组找出平均数的同时,对整个数组进行升序排序。
(2)、开始遍历数组,当遇到比平均数大的数字的时,直接将后面的所有数字输出。或者采取对半查找的方式找到比平均数大的数字,对比次数更少,效率更高,适用于大量数据。
二、实现:
采取第一种方式实现。
1、定义数组大小,可以设置一个变量,通过改变变量值,可以达到修改数组大小的目的。
2、遍历整个数组,计算平均数。
3、遍历整个数组,比较,输出比平均数大的数字,遍历完成后输出换行。
实现代码:
import java.util.Scanner;
//java代码:键盘录入数据到数据,输出其大于平均数的数
public class AverageTest {
/**
* 一、思路:
* 1、第一步由用户输入数据并存入数组,要输入多少个数据,需要给出提示。
* 2、第二步统计平均数。需要遍历整个数组。
* 3、第三步继续遍历数组,将每个数和平均数进行比较。
* 4、由于2、3都涉及到遍历数组,所以在找出平均数及比较两个步骤方面,有两种方式。
* 第一种:
* (1)、遍历整个数组求出平均数。
* (2)、遍历整个数组,输出比平均数大的数。
* 第二种:
* (1)、在遍历整个数组找出平均数的同时,对整个数组进行升序排序。
* (2)、开始遍历数组,当遇到比平均数大的数字的时,直接将后面的所有数字输出。
* 或者采取对半查找的方式找到比平均数大的数字,对比次数更少,效率更高,适用于大量数据。
* 二、实现:
* 采取第一种方式实现。
* 1、定义数组大小,可以设置一个变量,通过改变变量值,可以达到修改数组大小的目的。
* 2、遍历整个数组,计算平均数。
* 3、遍历整个数组,比较,输出比平均数大的数字,遍历完成后输出换行。
* */
//定义数组的大小,即用户输入的数据个数。修改此值即可修改数组大小。
public static final int COUNT = 5;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[COUNT];
int sum = 0;
float ave = 0;
Scanner reader = new Scanner(System.in);
//第一步:用户输入,同时计算总数,最后计算平均数
System.out.println("请输入 " + COUNT + " 个整数:");
for(int i = 0;i < COUNT;i++){
arr[i] = reader.nextInt();
sum += arr[i]; //计算总数
}
ave = (float)sum/(float)COUNT; //计算平均数
System.out.println("该组数字的平均数为:" + ave);
//第二步:与平均数比较,输出比平均数大的数字
System.out.println("该组数字中,比平均数大的数字有:");
for(int i = 0;i < COUNT;i++){
if(arr[i] > ave){
System.out.print(arr[i] + " ");
}
}
System.out.println();
reader.close(); //关闭流
}
}
运行结果图:
实现逻辑很简单,第二种方式的实现比较复杂,需要了解相关的算法,可以尝试写一下。