我的Java程序没有改变变量

时间:2015-06-04 16:44:16

标签: java pi

我只是在学习Java,并决定创建一个Pi计算器,我用Python编写它并使其工作到大约14 d.p.

公式I使用的方法是通过计算无限循环中的小数部分并在其上加3来实现。

但是现在我已经将它带入了Java,它并没有看到改变整个'超出' 3.0' (这就是问题)。我知道,因为从下面的代码可以看出它显示了每个循环后的总数。

以下是代码:

public class divider {
    public static void main(String[] args) {
        //declares variables
        boolean PosOrNeg = true;
        double Total = 3.0;
        long Count = 0;
        long No1 = 0;
        long No2 = 1;
        long No3 = 2;
        double Changer = 0;

        /begins loop
        do {
            // sets the value by which the total value will be changed
            No1 =+ 2;
            No2 =+ 2;
            No3 =+ 2;
            Changer = (4 / (No1 * No2 * No3));

            if (PosOrNeg == True) {
                Total = Total + Changer;
                PosOrNeg = false;
            } else {
                Total = Total - Changer;
                PosOrNeg = true;
            }

            Count += 1;
            System.out.println(Total);
        } while (Count != 31957);

        // displays total calculated and how many loops reaching that value required
        System.out.println("PI");
        System.out.println(Total);
        System.out.println(Count);
    }
}

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

分配变量

double sum = 4;

变化

 No1 = +2; to  No1 +=2; or No1 = No1+2;
 No2 = +2;  to  No2 +=2; or No2 = No2+2;
 No3 = +2; to  No3 +=2; or No3 = No3+2;

更改

 Changer = (4/ (No1 * No2 * No3)); to  Changer = (sum/ (No1 * No2 * No3));

它会起作用。

答案 1 :(得分:1)

您必须使用浮点除法,否则Changer将始终为0。 Python3默认执行此操作,但Java不支持。另外,您将+=错误地输入为=+,以便No1No3在每个回合中始终设置为+2,而不是递增2。

        No1 += 2;                             // =+ -> +=
        No2 += 2;                             // =+ -> +=
        No3 += 2;                             // =+ -> +=
        Changer = (4.0 / (No1 * No2 * No3));  // 4  -> 4.0

更改这些行,它应该有效。输出:

PI
3.141592653589793
31957

答案 2 :(得分:0)

您的代码有错误

if (PosOrNeg == True) {
}

应该是

if (PosOrNeg == true) {
}