0

我试图在一个类中创建一个静态方法,该方法传递一个数组对象数组并返回数组中对象的平均值。

public static double calcAverage() {
  int sum = 0;
  for (int i=0; i < people.length; i++)
            sum = sum + people[i];
  double calcAverage() = sum / people.length
     System.out.println(people.calcAverage());
}

代码出现编译错误,但我是否朝着正确的方向前进?

4

3 回答 3

1
public static double calcAverage() {
  int sum = 0;
  for (int i=0; i < people.length; i++)
            sum = sum + people[i];
  double calcAverage() = sum / people.length
     System.out.println(people.calcAverage());
}

改变

  double calcAverage() = sum / people.length

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

(声明新变量的正确方法)

改变

     System.out.println(people.calcAverage());

  return average;

(如果你想打印调用函数的结果,你应该总是在函数之外做,例如main在调用函数并存储返回结果之后再做)

所以我们有:

public static double calcAverage() {
  int sum = 0;
  for (int i=0; i < people.length; i++)
  {
       sum = sum + people[i];
  }
  double average = sum / (double)people.length;
  return average;
}
于 2013-03-26T02:12:26.500 回答
1

你的关闭。虽然我看到了一些错误。

首先你的总和=总和+人[i];

people[i] 返回的是对象而不是整数,因此将对象添加到整数将不起作用。

其次,您在 calcAverage 方法中调用 calcAverage() ,这可能不是您想要做的。这样做称为递归,但我认为您应该调用 calcAverage() 之外的方法。

于 2013-03-26T02:12:28.547 回答
1
// pass people as a parameter
public static double calcAverage(int[] people) {
   // IMPORTANT: this must be a double, otherwise you're dividing an integer by an integer and you will get the wrong answer
   double sum = 0;
   for (int i=0; i < people.length; i++) {
        sum = sum + people[i];
   }
   // remove the ()
   double result = sum / people.length;
   System.out.println(result);

   // return something
   return result;
}


// example
int[] myPeople = {1,2,3,4,5,6,7,8};
double myPeopleAverage = calcAverage(myPeople);
于 2013-03-26T02:18:31.303 回答