我正在编写一个程序来打印系列和系列的总和(接受用户的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();
}
}
我无法弄清楚如何打印系列本身。
答案 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);
}