Java中的指数(足够简单)

时间:2015-12-14 07:47:21

标签: java exponent

编写一个执行指数之和的循环,如下所示: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关。

5 个答案:

答案 0 :(得分:2)

为什么要在每次迭代时重新评估整个术语?

这样的东西
int term = 1;
int sum = 0;    
for (int i = 0; i < n; ++i){    
   sum += term;
   term *= 2;
}

更高效。在这里,n是术语的数量:在您的示例中,它是3.如果您想要包含一个额外的术语,请使用<= n作为for循环中的停止条件。

继续,请考虑使用long作为termsum的类型。

答案 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)

我发现您的代码存在一些问题:

  1. 您没有向result添加2的幂,您正在向自身添加result,即在每次迭代中将结果乘以2。结果将是1,2,4,8 ......

  2. 您正在保留一个sum变量,它是i的总和。我不知道它的目的是什么,但你没有使用那个变量,所以在这种情况下它没有效果。

  3. 我认为你要做的是:

    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);