请高手帮我看看,我写的如下:import java.util.Scanner;
public class xiti51 {
public static void main(String args[]){
int n,m=0,max,j=0;
int size=5;
int aa[]=new int[size];
for(int i=0;i<aa.length;i++){
Scanner ss=new Scanner(System.in);
aa[i]=ss.nextInt();
n=aa[i];
m=m+n;
max=m/i;
if(n>max)
System.out.println(n);
}
}
}
一、思路:
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(); //关闭流
}
}
运行结果图:
实现逻辑很简单,第二种方式的实现比较复杂,需要了解相关的算法,可以尝试写一下。
Scanner input = new Scanner(System.in);
System.out.println("你想比较几个数字:");
int count = input.nextInt();
int num[] = new int[count]; //保存输入的数字
int sum = 0; //保存数字它们的和
double avg = 0; //保存它们的平均值
for (int i = 0; i < num.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数字:");
num[i] = input.nextInt();
sum += num[i]; //求和
}
avg = sum / count; //求平均值
System.out.println("它们的和是:" + sum);
System.out.println("它们的平均值是:" + avg);
System.out.println("以下数字大于平均值:");
for (int i = 0; i < num.length; i++) {
if (num[i] > avg) {
System.out.println(num[i]);
}
}
}
}
可以解决吗?
{ public static void main(String args[])
{
double evl=0;
int size = 5;
int sum=0;
int aa[]=new int[size]; for (int i = 0; i < size; i++)
{
Scanner ss = new Scanner(System.in);
int temp= ss.nextInt();
sum+=temp;
aa[i]+=temp;
}
evl=((double)sum)/size;
for (int i = 0; i < size; i++)
{
if(aa[i]>evl)
{
System.out.println(aa[i]);
}
}
}
} 平均值是需要用double 来接收的, 可能会是小数 !