编写一个执行指数之和的循环,如下所示:2 ^ 0,2 ^ 1,2 ^ 2并将它们相加。
这是我的计划:
import java.util.Scanner;
public class Exponents {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println(" Enter expoenent ");
int n = Integer.parseInt(reader.nextLine());
int sum = 0;
int i = 0;
int result = (int)Math.pow(2, sum);
while(i <= n) {
i++;
sum = sum + i;
result += result;
}
System.out.println(result);
}
}
我似乎总是一次性的。它似乎不想添加2 ^ 0,这是1 ...所以我总是1关。
答案 0 :(得分:2)
为什么要在每次迭代时重新评估整个术语?
像
这样的东西int term = 1;
int sum = 0;
for (int i = 0; i < n; ++i){
sum += term;
term *= 2;
}
更高效。在这里,n
是术语的数量:在您的示例中,它是3.如果您想要包含一个额外的术语,请使用<= n
作为for
循环中的停止条件。
继续,请考虑使用long
作为term
和sum
的类型。
答案 1 :(得分:0)
简单就是试试这个。
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println(" Enter expoenent ");
int n = Integer.parseInt(reader.nextLine());
int sum = 0;
for (int i = 0; i <= n;) {
sum += (int) Math.pow(2, i);
i++;
}
System.out.println(sum);
}
答案 2 :(得分:0)
问题是你只计算一次功率,然后计算一些其他总和,而不是问题中的那个。
您的代码应该像
int i = 0;
int result = 0;
while(i <= n) {
result += Math.pow(2, i++);
}
System.out.println(result);
Math.pow(2, i++)
这里我们计算2的幂和自动递增i
。
答案 3 :(得分:0)
尝试这将导致所需的输出。
System.out.println("Enter exponent : ");
int n = Integer.parseInt(reader.nextLine());
int number = 2;
int i = 0;
double sum = 0;
while (i <= n) {
sum = sum + Math.pow(number, i);
i = i + 1;
}
System.out.println("The sum is: " + sum);
答案 4 :(得分:0)
我发现您的代码存在一些问题:
您没有向result
添加2的幂,您正在向自身添加result
,即在每次迭代中将结果乘以2。结果将是1,2,4,8 ......
您正在保留一个sum变量,它是i
的总和。我不知道它的目的是什么,但你没有使用那个变量,所以在这种情况下它没有效果。
我认为你要做的是:
int n = Integer.parseInt(reader.nextLine());
int result = 0;
for (int i = 0; i <= n;) {
result += (int) Math.pow(2, sum); // add 2^i to the result
i++; // increment i by one.
}
System.out.println(sum);