Java返回没有输出消息

时间:2015-08-04 00:54:21

标签: java methods return

问题编号:我不明白为什么当我在main()中调用此方法时,它不会输出计算出的平均值。编译器留空,就是这样。自学Java很有挑战性。

问题2:我们可以使用' return'输出类似("平均值为" +中位数)的内容。声明而不是' System.out.print' ?

谢谢!

public static double calcAverage(int[] numbers){        // semi-done
    //    Calculate the average value and return it
    double total = 0;
    for (int i = 0; i < numbers.length; i++){
        total = total + numbers[i];
    }
    System.out.printf(" The average of all numbers is: \n", total/numbers.length);
    System.out.println();
    return total/numbers.length;
}

3 个答案:

答案 0 :(得分:2)

我建议你阅读Oracle Java教程。

  1. System.out.printf() - &gt;表示由文字和格式说明符组成。仅当格式字符串中有格式说明符时才需要参数。最后,您可以使用System.out.print()

  2. 您的方法返回类型为 double - &gt; public static double calcAverage(int[] numbers)。因此,此方法始终返回 double 。它永远不会返回任何其他类型,如int,String等。如果它没有改变。如果您想返回The average is" + median之类的内容,则表示您的方法返回类型为String,只需打印结果值即可。然后,您需要将以下内容更改为public static String calcAverage(int[] numbers)

答案 1 :(得分:1)

1)您还没有告诉printf在哪里或如何写结果。试试System.out.printf(" The average of all numbers is: %f\n", total/numbers.length); //possibly "lf", I'm not a regular Java printf user.

2)你可以让你的方法返回string而不是double - 有些类可以帮助StringBuffer

答案 2 :(得分:1)

对于您的第一个问题,您的calcAverage方法返回一个双倍,这与打印它不同。

以下代码显示了不同之处:

int[] list = { 1, 2, ..., 5};
calcAverage(list); // We did nothing with the return value... so we lost it
double avg = calcAverage(list); // We assigned the result.. did not lost it :)
// Now we can print the result
System.out.println("The average of all numbers is: \n" + avg);
System.out.println("The average of all numbers is: \n" + calcAverage(list)); // Or printing the result value directly

对于你的第二个问题,如果你希望你的方法返回类似&#34的东西;平均值是&#34; +中位数,你需要一个字符串作为返回值。但我不认为有人希望他的calcAverage方法返回一个字符串... (看看上面调用过程的代码,存储结果并打印出来)

例如:

public static String calcAverage(int[] numbers){        // Returns a string
    //    Calculate the average value and return it
    double total = 0;
    for (int i = 0; i < numbers.length; i++){
         total = total + numbers[i];
    }

    String answer = "The average of all numbers is: \n" + (total / numbers.length);
    return answer;
}