我正在嘗試制作一個使用以下算法計算 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 的第二次打?。╳hile 循環的第二次循環)是 1.0。第三個是 -1.0,然后第四個是 1.0,依此類推......我不明白為什么它在所有迭代中都不是 -1.0,因為據我所知,對于 java 賦值運算符,如果左運算符是“=”而右運算符是遞增或遞減符號,那么結果應該始終是變量 k 將始終 = -k。
3 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
你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
提交
取消