计算Pi Java程序

sea*_*ean 4 java oop

我正在学习我的第一个Java编程课程,这是我的第一个课程.我对如何处理它感到很困惑.任何帮助或更正将不胜感激.

您可以使用以下系列来估算常量PI的值:

PI = 4 ( 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... + ( (-1)^(i+1) )/ (2i - 1) )
Run Code Online (Sandbox Code Playgroud)

提示用户输入i的值(换句话说,使用此系列中的多少项)来计算PI.例如,如果用户输入10000,则对该系列的前10,000个元素求和,然后显示结果.

除了显示最终结果(PI的最终近似值)之外,我希望您沿着中间数的方式显示每个10的幂.所以10,100,1000,10000等等,向屏幕显示近似值PI的总和元素数量.

这是我到目前为止所做的..

import java.util.Scanner;
        public class CalculatePI {

            public static void main(String[] args) {
                // Create a Scanner object
                Scanner input = new Scanner (System.in);

                // Prompt the user to enter input
                System.out.println("Enter number of terms");
                double i = input.nextDouble(); // value of i user entered
                    double sum = 0;
                for(i=0; i<10000; i++){
                           if(i%2 == 0) // if the remainder of `i/2` is 0
                           sum += -1 / ( 2 * i - 1);
                        else
                           sum += 1 / (2 * i - 1);
    }

                        System.out.println(sum);


    }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*ica 8

我看到的第一件事是你试图从你的void main方法返回一个值.

不要return pi;从你的主要方法.打印出来.

System.out.println(pi);
Run Code Online (Sandbox Code Playgroud)

其次,当人们写一个for循环时,他们通常会迭代i,这可能与i你的教授在公式中提到的相同

for(double i=0; i<SomeNumber; i++)
{
    sum += ((-1)^(i+1)) / (2 * i - 1) );
}
Run Code Online (Sandbox Code Playgroud)

现在,这将无法正常工作,你仍然必须处理^,java本身不使用.幸运的是,你-1^(i+1)是一个交替的数字,所以你可以使用一个if声明

for(double i=0; i<SomeNumber; i++)
{
    if(i%2 == 0) // if the remainder of `i/2` is 0
        sum += -1 / ( 2 * i - 1);
    else
        sum += 1 / (2 * i - 1);
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上^是java中的有效(本机)运算符(通常是许多C风格的语言).但它不适用于浮点类型,因为它意味着按位异或. (3认同)