java“缺少返回语句”将无法编译
下面的方法应该返回从0到n的2的幂。但是,我得到一个错误,说我的代码没有编译,因为缺少return语句。 注意:这是一个与我的教科书相关的在线站点(构建Java程序、3E、Reges和Stepp)。我们应该只写问题陈述中描述的方法
public static int printPowersof2(int n) {
for (int i = 0; i <= n; i++) {
int number = (int) Math.pow(2, i);
return number;
}
}
# 1 楼答案
你实际上不想做任何事情。问题是“编写一个名为printPowersOf2的方法,该方法接受一个最大值作为参数,并打印从20(1)到该最大值(包括)的每一个2次幂。”这与返回任何值无关
return
和结果类型,如果希望能够调用表达式中的方法并使用其值,则可以使用它们。例如:将
d
设置为5的平方根。要使其工作,必须声明sqrt
方法以返回一个值(实际上是一个double
),并且sqrt
的方法体中必须有一个return
语句,告诉它该值将是什么。在上面的语句中,得到return
的值将被分配到d
但是,在您的情况下,您不希望将任何内容设置为值。你永远不会想做这样的事情
因为
printPowersOf2
的目的是打印结果,而不是计算可在表达式中使用的值因此,方法的结果类型应为
void
:并且主体不能包含任何包含值的
return
语句。(return;
没有值的语句是可以的。)正文将打印值(可能使用System.out.println
),但不会返回任何值# 2 楼答案
必须在循环之外有一个return语句,因为如果n为负,则可能根本不会执行循环,在这种情况下,该方法将没有返回值
也就是说,正如评论中提到的,该方法的逻辑存在问题。 如果,顾名思义,该方法应该打印2到n的所有幂,那么当i为0时,它不应该返回。return语句应该只出现在循环之外
我不确定返回值应该是多少。如果您想返回2的所有幂,而不是只打印它们,那么您的方法应该返回一个列表或数组
# 3 楼答案
将回路置于回路外
# 4 楼答案
好的,谢谢你的帮助。如上所述,我对无效和返回感到困惑。工作方法如下:
# 5 楼答案
如果要返回多个结果(在本例中,2的幂从0到n),则需要返回某种类型的集合,例如列表:
或数组: