我正在尝试计算求和和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);
}
}
答案 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