Java 在while循环中更改变量
我正在尝试制作一个程序,使用以下算法计算PI:Java 在while循环中更改变量,java,Java,我正在尝试制作一个程序,使用以下算法计算PI: PI = 4 x (1 - 1/3 + 1/5 - 1/7 + 1/9 ....) etc. 我不明白操作符的位置是如何影响变量的 在循环的第一次迭代中产生的结果是有意义的,但随后它似乎重置为初始值,并在第二次迭代中忽略赋值运算符。重复这个结果1,然后是结果2,然后是结果1,结果2,等等 我试着在《Java:如何编程(早期对象),第11版》这本书中查找,在第四章中,他们讨论了操作符,但我发现它们没有涵盖循环中的条件 double k = 1
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
- 等等
-=
与操作=-
混淆了
a-=b
执行a-b
并将结果存储在a
a=-b
执行-b
(更改符号),然后将-b
存储到a
这就是k=-k
所做的。取k
的值,更改其符号并存储到k
。这相当于在循环之前更改k
的符号
k=1
- 循环#1
:现在k=-(1.0)
,它被带到下一个循环k=-1.0
- 循环#2
:现在k=-1.0
,它被带到下一个循环k=1.0
- 循环#3
:现在k=-(1.0)
,它被带到下一个循环k=-1.0
- 等等
k
正在改变每个循环,就像j
不是3.0
每个循环一样
您所说的递增和递减符号可能是
k--
和k++
,或者可能是k-=k
和k+=k
。我不确定。如果k==-1.0
而您正在对其执行-k
,会发生什么?或者更准确地说,什么是-(-1.0)
?不是在每次迭代中减去一个分数,而是在每一秒中减去一个分数。在每次迭代中设置k=-k
只是切换符号。啊,太好了。谢谢你。我有一种感觉,当两个“-”符号在一起时,它等于一个正数。我只是脑子里有点糊涂。但你解释得很好。谢谢。非常感谢,我感谢你花时间帮助我。非常感谢,我感谢你花时间帮助我