【问题标题】:How to return value from method that has an array in its parameter in Java?如何从Java中参数中包含数组的方法返回值?
【发布时间】:2012-02-07 05:35:09
【问题描述】:

我有这个代码,但它不起作用!

public class Trial
{
    public static void main (String [] args)
    {
        int average;
        int m = 0;

        int [] nums = {1,6,8,9,10,60,72};

        average = getAverage(int [] nums);
    }

    public static int getAverage(int [] a)
    {
        int sum = 0;
        for(int i=0; i<a.length; i++)
            sum = sum +a[i];

        int avg = sum/a.length;
        return avg;
    }
}

问题出在哪里?我需要通过调用计算平均值的方法来获得该数组的平均值。

【问题讨论】:

  • 去掉调用中的声明,只传“nums”即可。
  • 另外,考虑使用表达式:for (int i : a) { sum += i; }

标签: java arrays methods


【解决方案1】:

改变你的方法调用:

average = getAverage(nums);

【讨论】:

    【解决方案2】:
    average = getAverage(int [] nums); //this is wrong
    
    average = getAverage(nums); //this is right. Just sintaxis.
    

    【讨论】:

      【解决方案3】:

      我看到两个问题:

      1. average = getAverage(int [] nums) 应改为 average = getAverage(nums)
      2. 该函数返回一个int。您可能需要考虑对结果使用浮点数学。否则,您会将答案截断为最近的int

      【讨论】:

      • 是的,它有效!愚蠢的错误:(是的,我需要它作为最接近的整数
      • 到最近的?所以你需要做一个 Round 或 truncate 之类的,因为这条线 int avg = sum/a.length;获得浮点数时可能会引发异常
      • @Mr.不,它不会抛出异常。它会悄悄地截断。
      • @Mr. - 整个事情都是整数数学,不会因为“浮点”而引发异常。唯一可能遇到的异常是数组为空(除以零)。显式调用Round() 可能会被调用(尽管需要转换一个或两个运算符)。
      • 感谢您的解释不知道,它被称为明确,谢谢!
      【解决方案4】:

      avg 可以是浮点值,但您的实现将始终返回整数。

      考虑为sumavg 使用浮点值并将返回类型更改为double

      【讨论】:

        猜你喜欢
        • 2014-11-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        相关资源
        最近更新 更多