如何在Java中计算第n个术语是用户输入的系列之和

时间:2017-09-12 18:13:39

标签: java sum series

我正在尝试计算求和和Pi。我已经让Pi计算起作用,但是在求和方面遇到了困难。求和的输出应该计算1/3 + 3/5 + 5/7 ....第n个项是用户输入的数字/ n,但我不确定我的计算。如果我输入5输出应该计算1/3 + 3/5,但是这个代码会增加5个术语1/3 + 3/5 + 5/7 + 7/9 + 9/11,我做错了什么?这是代码:

import java.util.Scanner;
public class n01092281
{
    public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.println("Enter your nth term for the series.");
      double userInput = input.nextInt();   
      double sum = 0.0;
      for(int i = 2; i <= userInput*2; i+=2) {
         sum += ((double)(i-1)/(i+1));
       }
      System.out.printf("The sum of the series is %12.12f" , sum); 
      double Pi = 0;
      for (int counter = 1; counter < userInput; counter++){
         Pi += 4 * (Math.pow(-1,counter + 1)/((2*counter) - 1));
      }
      System.out.printf(" ,The computation of Pi is %1.12f",  Pi);
   }   
}

2 个答案:

答案 0 :(得分:1)

我猜,你正在做正确的计算。我只是改变了你使用i的方式。此外,您只需要更新计数您想要的次数。

这是我改变它的方式

      double userInput = 11;
      int count =0;
      if(userInput>=3){
          count =(int)( userInput-1)/2;
      }
      double sum = 0.0;
      for(int i = 1; i <= count; i++) {
         sum += ((double)(2*i-1)/(2*i+1));
         System.out.print((2*i-1)+"/"+(2*i+1)+' ');
       }
      System.out.println();
      System.out.printf("The sum of the series is %12.12f" , sum); 

输出: -

1/3 3/5 5/7 7/9 9/11 
The sum of the series is 3.243578643579

这里我也是打印系列,为你说清楚。

答案 1 :(得分:0)

根据你的问题,你的系列是r / n,其中n是第n个术语。使用这个简单的函数将系列加到第n个项。

private static void sum_up_series(int nth) {
    double sum = 0;
    for (int i = 0; i < nth; i++) {
        int r = (1 + (i * 2));
        int n = (3 + (i * 2));
        if (n <= nth) {
            sum += (double) (r) / (n);
            System.out.print(r + "/" + n + " ");
        }
    }
    System.out.print("\nsum = " + sum);
}

这里是n = 11

的输出
1/3 3/5 5/7 7/9 9/11 sum = 3.2435786435786436