亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

while 循環中的變量變化

while 循環中的變量變化

瀟湘沐 2023-04-13 14:54:40
我正在嘗試制作一個使用以下算法計算 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。

  • 等等


查看完整回答
反對 回復 2023-04-13
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

據我所知,如果左邊的運算符是'=',右邊的運算符是遞增或遞減符號,那么結果應該總是變量k總是=-k。

我認為您將操作-=與操作混淆了=-

a -= b執行a-b并將結果存儲在a

a = -b執行-b(更改符號)然后存儲-ba

這就是它的k = -k作用。取值k,改變其符號并存入k。那相當于說改變了的符號k。


查看完整回答
反對 回復 2023-04-13
?
海綿寶寶撒

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-=kand k+=k。我不知道。


查看完整回答
反對 回復 2023-04-13
  • 3 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號