我正在尝试使用以下算法制作计算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-=k
和k+=k
。我不确定。