2015-11-10 17 views
0

我需要計算出2^0+2^1+2^2+...+2^n的總和,其中n是用戶輸入的數字。主要問題是我不知道如何使用while循環將2^n的不同結果相加。如何用while循環對2的冪求和

這裏是我試過:

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); 
    } 
} 
+1

什麼是你的輸入,預期的輸出,實際輸出? –

+1

刪除'Math.pow(number,i);'在它自己的行上。那什麼都不做。爲什麼不在循環之後使用'sum'? –

+3

你可以返回2 ^(n + 1) - 1 ...給出相同的答案:) – blake305

回答

0

一切都很好,短短几年的變化。 部分代碼更改爲

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

你的條件是倒退,它應該閱讀:

while (i <= power) 
0

你計算功率之和,則完全忽略它,只是打印出來2^i的結果。你應該打印出總和,是這樣的:

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

爲造型加分,這將無法處理負電源,所以你需要測試這一點。

2

只有你所要做的就是:

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

    } 
} 

在這種link解釋數學expresion

0

不明白你爲什麼要在這種情況下循環。你可以不喜歡它:

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

但是,如果你真的想用循環試試這個:

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

下面是評論的解決方案來解釋的邏輯。 While循環需要某種變量來控制迭代次數。當然這個變量需要在內部的某處更新。

顯然,您可以使用Math.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 
-1
public class SumofSquare { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     String c = "123"; 
     char d[] = c.toCharArray(); 
     int a[] = new int[d.length + 1]; 

     for (int i = 0; i < d.length; i++) 
      a[i] = d[i] - 48; 

     int r = 0; 

     for (int i = 0; i < c.length(); i++) 
      r = r + (int) Math.pow(a[i], a[i + 1]); 

     System.out.println(r); 
    } 
} 
+0

請提供你的代碼的解釋,並記住OP要求'while'循環。 –