【发布时间】:2017-11-07 16:20:42
【问题描述】:
public class main {
public static void main(String[] args) {
aboveAverageTester();
}
public static int aboveAverage(int a, int b, int c, int d, int e, int f) {
//This method computes the average of the parameters
//and then returns how many of the parameters are above the average.
int avg = (a + b + c + d + e + f) / 6;
int above = 0;
if (a > avg) {
return a;
}else if (b > avg) {
return b;
}else if (c > avg) {
return c;
}else if (d > avg) {
return d;
}else if (e > avg) {
return e;
}else if (f > avg) {
return f;
}else{
return a + b + c + e + f;
}
}
public static int aboveAverageTester() {
int aboveAverage = aboveAverage(10, 10, 10, 10, 45, 50);
System.out.println(aboveAverage);
return aboveAverage;
}
}
我知道 aboveAverage 方法逻辑可能完全关闭,但是当我尝试返回有多少参数高于平均值时遇到了问题。
根据我的代码,我相信当您在每个 if 之后继续返回 a、b、c.. 等时,它只是 1 个实例,并且不会添加到其他实例的列表中,而我的值大于平均值。
我正在尝试执行此操作,而不用这种方法打印任何内容,只打印逻辑。
我知道我在 aboveAvg 方法的底部添加了所有的 a、b、c、d、e、f 而不仅仅是从它们创建一个列表。
谁能告诉我如何处理这个问题?
【问题讨论】:
-
事实上,这不会(如评论所说)返回“有多少参数高于平均水平”,而是“第一个高于平均水平的参数,或者如果没有则总和”。使用那个漂亮的
above = 0变量并为每个高于平均水平的变量添加+1,最后返回。哦,别忘了if (...) ... else分支中的 else 分支仅在条件为 false 时被调用,所以如果a>avg则永远不会检查其他条件。 -
您是否尝试过“从他们创建列表”?