-1

在下面的代码中,该方法array1不会返回平均值,因为它的返回类型是void.

我知道什么void意思,但有人可以向我解释什么是 void 结果类型以及如何使此方法返回平均值:

public class JavaApplication4 {
    public static void main(String[] args) {
    int[] a = {1,2,3,4};

    double result = array1 (a);
}

public static array1 (int[] b) {
    double avarage;
    int total = 0;
    for (int x:b) {
        total += x;
    }

avarage = total / b.length;
return avarage;
}
4

3 回答 3

2

“结果类型”或“返回类型”在函数声明中设置。它只是表示调用函数后将返回什么类型的数据。您的函数应如下所示:

public static double array1(int[] b) {
    double average;
    int total=0;
    for(int x:b){
        total +=x;
    }
    average = (double) total/b.length;

    return average;
}

这将在函数完成后返回平均值。因此,函数完成后,结果将与平均值的最终值相同。

于 2013-01-23T20:02:00.867 回答
1

您需要声明array1为正在返回double。将其声明更改为:

public static double array1(int [] b ) {

void函数 -- void array1(...)-- 不返回值。

请注意,您的代码中还有另一个错误:

avarage = total / b.length;

上面使用整数除法,这意味着结果被截断为整数,然后才转换为double. 要修复,请将行更改为:

avarage = total / (double)b.length;
于 2013-01-23T19:51:53.887 回答
0

返回类型 void 意味着方法不返回任何内容。当您想要对数组执行操作但没有任何与该操作关联的值时,这很有用。例如,假设您想交换数组中的第一个和最后一个元素,您可以编写类似这样的方法(忽略必要的错​​误检查)

 public void swapArrayLocs(int[] swapping){
      int temp = swapping[0];
      swapping[0] = swapping[swapping.length - 1];
      swapping[swapping.length - 1] = temp;
 }

当您调用此方法时,您并不期望从中得到任何结果,您期望您的程序只处理业务并继续执行。

在这种情况下,您实际上希望您的 array1(int[]) 方法使其可用于程序的其余部分。您可以通过指定函数的返回类型来做到这一点,它告诉程序的其余部分您希望该函数返回什么类型的信息。在您的情况下,您可以通过将方法声明更改为来做到这一点。

public static double array1(int[] b){
    //the same method body
}

请注意在这种情况下如何在 static 之后插入单词 double。这告诉调用函数,当它执行 array1 时,该方法将返回一个 double 类型的值。将此与您之前所说的方法不会返回任何类型的信息进行对比。

于 2013-01-23T20:07:08.840 回答