簡體   English   中英

在while循環內更​​改變量

[英]Variable changing within a while loop

我正在嘗試制作一個使用以下算法來計算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。

您可以在循環外初始化k ,因此只能發生一次。 初始值為1

在每次迭代期間,您求k

k=-k;
  • 在第一次迭代期間,將1取為-1
  • 在第二次迭代期間, -1被取反為1
  • 在第三次迭代中,將1取為-1
  • 等等

據我所知,如果左運算符為“ =”,而右運算符為遞增或遞減符號,則結果應始終為變量k始終為-k。

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

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

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

那就是k = -k作用。 k的值,更改其符號並將其存儲為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 我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM