2013-10-05 27 views
1

我正在編寫一個程序來打印系列和系列的總和(接受來自用戶的X和N)。這是系列:Java-Print系列和該系列的總和

S=1-X^2/2!+X^3/3!-X^4/4!....x^N/N! 

這是我這麼遠:

import java.io.*; 

public class Program6 

{ 
int n,x; 

double sum; 
public void getValue() throws IOException 
{ 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("Input a value to be the maximum power"); 
    n=Integer.parseInt(br.readLine()); 
    System.out.println("input another value"); 
    x=Integer.parseInt(br.readLine()); 
} 
public void series() 
{ 
    sum=1.0; 
    double fact=1.0; 
    for(int a=2;a<=n;a++) 
    { 
     for(int b=a;b>0;b--) 
     {fact=fact*b; 
     } 
     double c=a/fact; 
     if(a%2==0) 
     sum=sum-(Math.pow(x,c)); 
     else 
     sum=sum+(Math.pow(x,c)); 
     fact=1; 

    } 
} 
public void display() 
{ 
    System.out.println("The sum of the series is " +sum); 
    } 
public static void main(String args[])throws IOException 
{ 
    Program6 obj=new Program6(); 
    obj.getValue(); 
    obj.series(); 
    obj.display(); 
    } 
} 

我無法弄清楚如何打印系列本身。

+1

這將真正幫助,如果你想縮進代碼 - 也,我強烈建議使用大括號周圍所有'if' /'else'機構 - 它將使代碼更加清晰,特別是當縮進被搞亂時...... –

+0

我認爲Scanner足以從鍵盤讀取值。 –

回答

0

的計算都在這是很好的一個迭代的方式完成 - 但你繼續運行在計算sum的價值觀,你永遠不保存系列「項目」 - 最好加一個類的成員,可能像List<Double> values和不斷增加進去每次計算了一系列新的項目,這樣你就可以迭代列表,打印所有的「成員」的計算完成後:

所以加一個類的成員變量:

List<Double> values = new LinkedList<Double>(); 

現在您可以保存這些值:

public void series() 
{ 
    sum=1.0; 
    double fact=1.0; 
    for(int a=2;a<=n;a++) 
    { 
     for(int b=a;b>0;b--) 
      fact=fact*b; 

     double c=a/fact; 
     double newValue = Math.pow(x,c); // line changed 

     if(a%2==0) 
      newValue = -newValue; // sign calculation 

     values.add(newValue);  // save the value 
     sum += newValue;   // now add 
     fact=1; 
    } 
} 

//and it's also easy to display the values: 
public void display() 
{ 
    System.out.println("The sum of the series is " +sum); 
    System.out.println("The members of the series are: "); 
    String str = ""; 
    for(Double d : values){ 
     str += d+", "; 
    } 
    str = str.substring(0,str.length()-2);//remove the last "," 
    System.out.println(str); 
} 

執行:

Input a value to be the maximum power 
5 
input another value 
2 
The sum of the series is 0.3210537507072142 
The members of the series are: 
-2.0, 1.4142135623730951, -1.122462048309373, 1.029302236643492