问题编号:我不明白为什么当我在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;
}
答案 0 :(得分:2)
我建议你阅读Oracle Java教程。
System.out.printf()
- &gt;表示由文字和格式说明符组成。仅当格式字符串中有格式说明符时才需要参数。最后,您可以使用System.out.print()
。
您的方法返回类型为 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;
}