为了账号安全,请及时绑定邮箱和手机立即绑定

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 的第二次打印(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

  • 等等


查看完整回答
反对 回复 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 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信