我正在尝试制作一个使用以下算法计算 PI 的程序:PI = 4 x (1 - 1/3 + 1/5 - 1/7 + 1/9 ....) etc.我不明白操作员的位置是如何影响变量的。循环第一次迭代产生的结果是有意义的,但随后它似乎重置为初始化值并在第二次通过时忽略赋值运算符。重复这个结果 1,然后是结果 2,然后是结果 1,结果 2,等等......我尝试查看这本名为“Java:如何编程(早期对象),第 11 版”的书,在第四章中他们讨论了运算符,但我可以看到他们没有涵盖循环中的条件。 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”的第一次打印为 -1.0。是的,但是 k 的第二次打印(while 循环的第二次循环)是 1.0。第三个是 -1.0,然后第四个是 1.0,依此类推......我不明白为什么它在所有迭代中都不是 -1.0,因为据我所知,对于 java 赋值运算符,如果左运算符是“=”而右运算符是递增或递减符号,那么结果应该始终是变量 k 将始终 = -k。
3 回答
Helenr
TA贡献1780条经验 获得超3个赞
你k
在循环外初始化,这样只会发生一次。 初始值为1
。
在每次迭代中你否定k
:
k=-k;
在第一次迭代期间
1
被取反成为-1
.在第二次迭代期间
-1
被取反成为1
。在第三次迭代期间
1
被否定成为-1
。等等
杨魅力
TA贡献1811条经验 获得超6个赞
据我所知,如果左边的运算符是'=',右边的运算符是递增或递减符号,那么结果应该总是变量k总是=-k。
我认为您将操作-=
与操作混淆了=-
a -= b
执行a-b
并将结果存储在a
a = -b
执行-b
(更改符号)然后存储-b
到a
这就是它的k = -k
作用。取值k
,改变其符号并存入k
。那相当于说改变了的符号k
。
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
循环前
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--
and k++
,或者 maybe k-=k
and k+=k
。我不知道。
添加回答
举报
0/150
提交
取消