2015-11-01 191 views
-1

我正在尝试编写平均数组的代码。我不断收到返回语句错误和主类缺失错误。请帮忙。如何计算阵列平均值

public class ArrayAverage { 
    public static double average(double[] x){ 
     // declare and intialize array to hold value 
     int[] numbers = new int[]{1, 2, 3 ,4, 5}; 

     //calculate sum of all array elements 
     int sum = 0; 

     for(int i=0; i < numbers.length ; i++) 
     sum = sum + numbers[i]; 

     //calculate average value 
     double average = sum/numbers.length; 

     System.out.println("Average value of array elements is : " + average); 
    } 
} 
+0

欢迎来到[SO]!您忽略了您正在使用的语言,这会阻止正确的专家向您提供帮助。我猜它是C#。记得告诉我们所有的相关细节.... –

+1

并不是每一个Java(?)教程都是从如何创建'main'开始的? – usr2564301

回答

2

在Java中,代码入口点始终是main方法。它具有以下签名:public static void main(String[] args)

您必须在main方法中调用average方法,以便应用程序运行。

此外,您的average方法声明返回值类型double。但是,该方法没有返回语句。您必须在方法return val;(val是您希望返回的任何双精度值)的末尾写入或者将方法返回类型声明为void

更何况,您的方法有一个参数xdouble[]类型。当调用你的方法时(在main方法中),你必须传递它这样的参数。或者,您可以更改您的方法签名以接受任何内容(无参数)。

现在,至于你的方法的身体。它不是以最佳实践书写的,但功能上它看起来不错,除了一件事。

//计算平均值
double average = sum/numbers.length;

这将做整数除法,给你一个整数的答案。这意味着小数点后的任何值都会被截断。为了解决这个问题,做两件事情之一:

  1. 声明sumdouble
  2. 将当,铸sumnumbers.length作为双

    double average = sum/(double) numbers.length;

附:我可以通过使用System.out.println来判断这是Java。将来,请务必使用Java标记您的问题,或者您的代码使用哪种语言。