有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java方法结果类型

在下面的代码中,方法array1不会返回avarage,因为它的返回类型是void

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

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;
}

共 (3) 个答案

  1. # 1 楼答案

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

    public static double array1(int [] b ) {
    

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

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

    avarage = total / b.length;
    

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

    avarage = total / (double)b.length;
    
  2. # 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;
    }
    

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

  3. # 3 楼答案

    返回类型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
    }
    

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