以下方法应将2的幂从0返回到n。但是,由于缺少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;
}
}
答案 0 :(得分:3)
你必须在循环之外有一个return语句,因为如果n是负数,那么循环可能根本不会执行,在这种情况下该方法不会有返回值。
public static int printPowersof2(int n) {
for (int i = 0; i <= n; i++) {
int number = (int) Math.pow(2, i);
return number;
}
return 0; // it's up to you to decide what to return in this case
}
如上所述,正如评论中所提到的,该方法的逻辑存在问题。 如果顾名思义,该方法应该打印2到n的所有幂,当i为0时,它不应该返回。返回语句应该只出现在循环之外。
public static int printPowersof2(int n) {
int number = 0;
for (int i = 0; i <= n; i++) {
number = (int) Math.pow(2, i);
System.out.println(number);
}
return number;
}
我不确定返回值应该是多少。如果你想返回2的所有幂而不是只打印它们,你的方法应该返回一个List或一个数组。
public static int[] printPowersof2(int n) {
if (n<0)
return new int[0];
int[] result = new int[n+1];
for (int i = 0; i <= n; i++) {
result[i] = (int) Math.pow(2, i);
}
return result;
}
答案 1 :(得分:1)
如果要返回多个结果(在您的情况下,2的幂从0到n),您需要返回某种类型的集合,例如:清单:
public static List<Integer> printPowersof2(int n) {
List<Integer> list = new ArrayList<>(n);
for (int i = 0; i <= n; i++) {
list.add((int) Math.pow(2, i));
}
return list;
}
或数组:
public static int[] printPowersof2(int n) {
int[] result = new int[n];
for (int i = 0; i <= n; i++) {
result[i] = (int) Math.pow(2, i);
}
return result;
}
答案 2 :(得分:1)
您实际上并不想return
任何事情。问题是“编写一个名为printPowersOf2的方法,它接受一个最大数字作为参数,并将每个2的幂从20(1)打印到最大功率,包括在内。”这没有说明返回任何值。
return
和结果类型。例如:
double d = Math.sqrt(5);
将d
设置为5的平方根。为此,必须声明sqrt
方法返回一个值(实际为double
),并且必须是return
方法体中某处的sqrt
语句,它告诉它该值是什么。在上面的语句中,该值(获得return
'的值将被分配到d
。
但是,在您的情况下,您不希望将任何内容设置为值。你永远不会想做像
这样的事情int something = printPowersOf2(10);
因为printPowersOf2
的目的是打印结果,而不是计算可以在表达式中使用的值。
因此,方法的结果类型应为void
:
public static void printPowersOf2(int n) {
...
}
并且正文不得包含任何包含值的return
语句。 (没有值的return;
语句都可以。)正文将打印值(可能使用System.out.println
),但不会返回任何值。
答案 3 :(得分:0)
将回报置于循环之外。
public static int printPowersof2(int n) {
int sum = 0;
for (int i = 0; i <= n; i++) {
int number = (int) Math.pow(2, i);
sum = sum + number;
System.out.println(number + " : " + sum); // will print current calculated result & sum of it
}
return sum; // I have returned sum, you can return whatever you want
}
答案 4 :(得分:0)
好的,谢谢你的帮助。如上所述,我对虚空和回归感到困惑。这是工作方法:
public static void printPowersOf2(int n) {
for (int i = 0; i <= n; i++) {
int number = (int) Math.pow(2, i);
System.out.print(number);
System.out.print(" ");
}
}