Java-Print系列和系列之和

时间:2013-10-05 08:17:59

标签: java

我正在编写一个程序来打印系列和系列的总和(接受用户的X和N)。这是系列:

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 个答案:

答案 0 :(得分:0)

计算是以迭代的方式完成的,但是你继续在计算的sum的值上运行,你永远不会保存系列“项目” - 更好地添加一个类成员,可能像{ {1}}并在每次计算新系列项目时不断添加,这样您就可以在计算完成后迭代列表并打印所有“成员”:

所以添加为类成员变量:

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