显示1的数组的平均值

时间:2014-05-24 10:36:11

标签: java arrays

我有一个程序,用户在数组中输入标记,然后得到平均值

这是使用Jcreator

我的问题是,当我要求我的程序的平均值时,它表示平均值为1

这是我的代码:

//averageEnglish
public void averageEnglish() 
{

  System.out.println("The Average Mark Of English Is");
  int averageEnglish = english.length / 10;
  System.out.println("-----------");
  System.out.println(averageEnglish);
  System.out.println("-----------");

}//End of averageEnglish

英语是一个int数组

int[] english = new int [10];

averageEnglish是一个变量

int averageEnglish;

6 个答案:

答案 0 :(得分:3)

10/10等于1.非常正常。 你需要做的是得到所有元素的总和,并将它们除以数组的长度。 另外:你使用的IDE并不是真正相关的

答案 1 :(得分:3)

english.length/10不是数组的平均值,它只是数组的长度(10)除以10,即1.你需要总结数组的所有值并将总和除以数组的长度。

通常,您不仅要将结果显示为整数,而且还要包含几位小数,请将总和和平均结果存储为double。

double sum = 0;
for (int i = 0; i < english.length; i++) {
    sum += english[i];
} 
double average = sum / english.length;

答案 2 :(得分:1)

你正在将数组的长度除以常数10(恰好是长度),所以你自然得到1.你应该对数组的所有值求和,然后除以它的长度:

double englighSum = 0;
for (int i = 0; i < english.length; ++i)
    englishSum += english[i];
}
double englishAverage = englishSum / english.length;

答案 3 :(得分:0)

如果您希望 user 填充数组,则需要使用Scanner对象。

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the number of grades: ");
    int n = scanner.nextInt();
    double[] english = new double[n];

    for(int i=0; i<n; i++)
    {
        System.out.println("Please enter  the grade for grade " + (i+1) + ":");
        english[i] = scanner.nextDouble();
    }
    scanner.close();

您可以使用Markus Johnsson的代码继续。

答案 4 :(得分:0)

您预计数组的大小并假设它总是10,这是第一个错误,然后您根据数组元素的数字而不是总和:

int[] english = new int[10];
/* Now we assume you did some stuff here to fill the array. */

//averageEnglish
public void averageEnglish() 
{

  System.out.println("The Average Mark Of English Is");

  int noOfElements = english.length; // The divisor

  int sum = 0; // The dividend

  for (int i = 0; i < noOfElements; i++) 
  {
    sum += english[i];
  }

  // Here is your Average (Should be of type double since there will be floating points)
  double averageEnglish = sum / noOfElements;

  System.out.println("-----------");
  System.out.println(averageEnglish);
  System.out.println("-----------");

}//End of averageEnglish

答案 5 :(得分:-1)

english.lenght的值始终为10.如下例所示:

int[] english = new int [10];

英语数组保存的数据无关紧要,其长度始终为10。 为了进行正确的计算,请使用数据,而不是数组的长度。