2013-10-05 4 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

Я думаю, что сканера достаточно для чтения значений с клавиатуры. –

ответ

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 
Смежные вопросы