先上代码:
import java.util.Scanner;
public class Test01
{ //目标:求出输入的N个double型数字的平均数,以及有几个数字大于这个平均数
public static void main(String[] args)
{
final int NUMBER_OF_ELEMENTS = 10; //输入数字的个数
double[] number = new double [NUMBER_OF_ELEMENTS];
double sum = 0; //平均数之和
java.util.Scanner input = new java.util.Scanner(System.in);
for(int i = 0; i < NUMBER_OF_ELEMENTS; i ++ )
{
System.out.print("Enter a new number :");
number[i] = input.nextDouble();
sum += number[i];
}
double average = sum / NUMBER_OF_ELEMENTS; //平均数
int count = 0; //大于平均数的数字的个数
for(int i = 0; i < NUMBER_OF_ELEMENTS; i ++)
{
if(i > average)
count ++;
}
System.out.print(average);
System.out.print("大于平均数的数有" + count + "个");
}
}
我全用“1”来测试的时候,平均数是1.0,然后大于平均数的数字有8个!……
然后甩“2”来测试,平均数2.0,大于平均数的数字是7个……
3的时候大于平均数6个……
以此类推……直到0个……
为啥会这样?求各位大大解释一小下吧!
新手提问难免白痴些,见谅……
谢谢!
控制台 测试 一维数组
for(int i = 0; i < NUMBER_OF_ELEMENTS; i ++)记得我以前犯过这样的错误!if( i > average) 这句应该是 if(number[i] > average)
楼主太粗心了吧,给你贴上完整的代码,注意代码的可阅读性
public class Test01 {
// 目标:求出输入的N个double型数字的平均数,以及有几个数字大于这个平均数
public static void main(String[] args) {
final int NUMBER_OF_ELEMENTS = 10; // 输入数字的个数
double[] number = new double[NUMBER_OF_ELEMENTS];
double sum = 0; // 平均数之和
java.util.Scanner input = new java.util.Scanner(System.in);
for (int i = 0; i < NUMBER_OF_ELEMENTS; i++) {
System.out.print("Enter a new number :");
number[i] = input.nextDouble();
sum += number[i];
}
double average = sum / NUMBER_OF_ELEMENTS; // 平均数
int count = 0; // 大于平均数的数字的个数
for (int i = 0; i < NUMBER_OF_ELEMENTS; i++) {
if (number[i] > average)
count++;
}
System.out.print(average);
System.out.print("大于平均数的数有" + count + "个");
}
}