我正在尝试使用以下算法制作计算PI的程序:

PI = 4 x (1 - 1/3 + 1/5 - 1/7 + 1/9 ....) etc.

我不明白操作员放置如何影响变量。

在循环的第一次迭代中产生的结果是有意义的,但是它似乎重置为初始值并且第二次忽略赋值运算符。重复这个结果1,然后是结果2,然后是结果1,结果2,等等......

我试着在本书中查找名为"Java: How to Program (Early Objects), 11th Edition"的文章,在第四章中他们讨论了操作符,但我可以看到它们没有覆盖循环中的条件。

   double k = 1.0, j = 1.0;

   double sum = 0, PI = 0;

   while((Math.abs(PI-Math.PI)>0.000001)){
       sum += k/j;

       j = j + 2;

       k=-k;

       PI = 4 * sum;    

       System.out.println(k);
    }   

我改变了while循环的条件运行4次并打印k。我期望变量'k'的第一个printing是-1.0。它是,但k的第二个printing(while循环的第二个循环)是1.0。第三个是-1.0,然后第四个是1.0,依此类推......

我不明白为什么在所有迭代中不是-1.0,因为对于java赋值运算符,据我所知,如果左运算符是'='而右运算符是增量或减量符号,那么结果应该始终是变量k总是= -k。

分析解答

在循环之前

k = 1

  • 循环#1 k = -(1.0):现在是k = -1.0,它将-1.0传送到下一个循环。

  • 循环#2 k = -(-1.0):现在是k = 1.0,它将1.0传送到下一个循环。

  • 循环#3 k = -(1.0):现在是k = -1.0,它将-1.0传送到下一个循环。

  • 等等

k正在改变每个循环,就像每个循环中j不是3.0一样。

您正在谈论的增量和减量符号可能是k--k++,或者可能是k-=kk+=k。我不确定。