有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何用while循环求2的幂和

我需要计算2^0+2^1+2^2+...+2^n的和,其中n是用户输入的数字。主要的问题是,我不知道如何使用while循环来总结2^n的不同结果

以下是我尝试过的:

import java.util.Scanner;

public class SumOfThePowers {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        System.out.println("Type a power: ");
        int power = Integer.parseInt(reader.nextLine());

        int number = 2; 
        int i = 0;
        double sum = 0;

        while(power <= i) {
            Math.pow(number, i);
            sum = sum + Math.pow(number, i);
            i = i + 1;
        }

        int result = (int)Math.pow(number, i);
        System.out.println("The sum is: " + result);
    }
}

共 (6) 个答案

  1. # 1 楼答案

    你唯一要做的就是:

    import java.util.Scanner;
    
    public class SumOfThePowers {
    
        public static void main(String[] args) {
            Scanner reader = new Scanner(System.in);
    
            System.out.println("Type a power: ");
            int power = Integer.parseInt(reader.nextLine());
    
            double sum = Math.pow(2,power+ 1 ) - 1;
            System.out.println("The sum is: " + sum);
    
        }
    }
    

    在这里,{a1}解释了数学表达式

  2. # 2 楼答案

    下面是一个带有注释的解决方案来解释逻辑。而循环需要某种变量来控制迭代次数。当然,这个变量需要在循环中的某个地方进行更新

    你可以用数学计算幂和。显然是pow()函数。使用它不需要导入语句。我希望这有帮助。祝你好运

        /* Scanner and variable to get and hold user input */
        Scanner scan = new Scanner( System.in );
        int userInput = 0;
    
        /* Variable to hold the sum, initialized to 0.0 */
        double sum = 0.0;
    
        /* Prompt the user, and obtain the reply */
        System.out.print( "Enter the exponent: ");
        userInput = scan.nextInt();
    
        /* The while loop and it's initialized counter */
        int counter = 0;    
        while( counter <= userInput ){
    
            /* Add each power to sum using Math.pow() */
            sum = sum + Math.pow( 2, counter );
    
            /* Watch the output as the loop runs */
            System.out.println( "Sum: " + sum );
    
            counter++;  // Increment counter, so the loop exits properly
    
        } // End while loop
    
  3. # 3 楼答案

    你计算幂和,然后完全忽略它,只是打印出2^i的结果。你应该打印出sum,比如:

    while (i <= power) {
       sum += Math.pow(number, i);
       i++;
    }
    System.out.println("The sum is: " + sum);
    

    对于样式点,这不会处理负幂,所以需要进行测试

  4. # 4 楼答案

    不明白在这种情况下为什么要循环。你可以这样做:

    System.out.println("The sum is: "+(Math.pow(2, power+1)-1 ));
    

    但如果你真的想使用loop,试试这个:

            Scanner reader = new Scanner(System.in);
    
            System.out.println("Type a power: ");
            int power = Integer.parseInt(reader.nextLine());
    
            int number = 2; 
            int i = 0;
            double sum = 0;
    
            while(i<=power) {
                sum = sum + Math.pow(number, i);
                i = i + 1;
            }
    
            int result = (int)Math.pow(number, i);
            System.out.println("The sum is: " + sum);
    
  5. # 5 楼答案

    好的,只是一些变化。 将零件代码更改为

            System.out.println("Type a power: ");
            int power = Integer.parseInt(reader.nextLine());
            int number = 2;
            int i = 0;
            double sum = 0;
    /*Remove this -------->  while(power <= i) {*/
            while (i <= power) {//it should be this
    /*Remove this ------->   Math.pow(number, i);*/
                sum = sum + Math.pow(number, i);
                i = i + 1;
            }
            System.out.println("The sum is: " + sum);
    
  6. # 6 楼答案

    你的条件句是倒转的,应该是:

    while (i <= power)