在Java中计算Pi到特定数量的项?

时间:2013-10-28 14:15:10

标签: java math pi

我已获得以下作业,但我的代码无效。问题是:

使用while或do-while循环,使用以下等式编写程序以计算PI:PI = 3 + 4 /(2 * 3 * 4) - 4 /(4 * 5 * 6)+ 4 / (6 * 7 * 8) - 4 /(8 * 9 * 10)+ ...允许用户指定要在计算中使用的术语数(显示5个术语)。每次循环时,只应将一个额外的术语添加到PI的估计值中。

这是我到目前为止的代码:     import java.util.Scanner;     import javax.swing.JOptionPane;     import java.lang.Math;

public class LabFriday25 {

public static void main(String[] args) {
    String termInput = JOptionPane.showInputDialog(null, "How many terms of 
                                 PI would you like?");
    Scanner termScan = new Scanner (termInput);

        double termNum = termScan.nextDouble();
        double pi = 3;
        int count = 0;
        double firstMul = 2;
        double secMul = 3;
        double thirdMul = 4;
        double totalMul = 0;

                while (count<= termNum)
                {
                    if (termNum==1)
                    {
                        pi = 3.0;
                    }

                    else if (count%2==0)
                    {
                        totalMul= (4/(firstMul*secMul*thirdMul));
                    }

                    else
                    { 

                       totalMul = -(4/((firstMul+2)*(secMul+2)*(thirdMul+2)));
                    }
                pi = pi + (totalMul);

                firstMul = firstMul + 2;
                secMul = secMul + 2;
                thirdMul = thirdMul + 2;
                //totalMul = (-1)*totalMul;
                count++;
            }


        JOptionPane.showMessageDialog(null, "The value of pi in " + termNum + " terms is : " + pi);
    }

}

我无法弄清楚为什么代码不会为3个或更多个Pi项返回正确的值,它每次都会保持相同的值。

编辑:我从while语句的末尾删除了分号,现在代码返回值3.0,用于用户输入的任意数量的术语。我哪里错了?

EDIT2:从while循环中删除了条件。答案更接近正确,但仍然不够准确。我该如何纠正这个问题给我正确的答案?

1 个答案:

答案 0 :(得分:3)

独立评估while语句末尾的分号,导致循环体无条件执行,因此结果始终相同

while (count > 0 && count <= termNum);
                                     ^

此外,循环在第一次迭代后终止。从循环中删除第一个表达式,即

while (count <= termNum) {