java 键盘输入若干数并存入数组,输出这些数中大于其平均值的数。。帮忙?

请高手帮我看看,我写的如下: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(); //关闭流
}

}

运行结果图:

实现逻辑很简单,第二种方式的实现比较复杂,需要了解相关的算法,可以尝试写一下。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-21
你好,试试这段代码:import java.util.Scanner;public class Demo3 { public static void main(String args[]) {
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]);
}
}
}
}
可以解决吗?
第2个回答  2013-12-21
你不能这样输出,你应该先把所以输入的数加起来,接收完输入后,再用总和除以总个数,得到的就是平均值,然后循环数组,判断是否大于平均值,如果大于就输出
第3个回答  2013-12-21
public class xiti51
{ 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 来接收的, 可能会是小数 !
相似回答