猿问

while 循环中的变量变化

我正在尝试制作一个使用以下算法计算 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。


潇湘沐
浏览 177回答 3
3回答

Helenr

你k在循环外初始化,这样只会发生一次。 初始值为1。在每次迭代中你否定k:k=-k;在第一次迭代期间1被取反成为-1.在第二次迭代期间-1被取反成为1。在第三次迭代期间1被否定成为-1。等等

杨魅力

据我所知,如果左边的运算符是'=',右边的运算符是递增或递减符号,那么结果应该总是变量k总是=-k。我认为您将操作-=与操作混淆了=-a -= b执行a-b并将结果存储在aa = -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--and k++,或者 maybe k-=kand k+=k。我不知道。
随时随地看视频慕课网APP

相关分类

Java
我要回答