1

我正在编写一个程序来打印系列和系列的总和(接受用户的 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();
    }
}

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

4

1 回答 1

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
于 2013-10-05T08:40:38.567 回答