我正在尝试制作一个用Leibniz方程估算pi的程序作为pi day的属性,但是与其打印出我希望控制台打印出无限pi的估算pi值,不如无限期地打印“ infinity”,直到终止执行为止。我非常非常困惑,需要帮助!码:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
//in order to celebrate pi day I have made this program that calculates pi with the Leibniz Formula
System.out.println("enter the number of iterations you want:");
double EstimatedPi=0;
Scanner input= new Scanner(System.in);
double iterations=input.nextDouble();
double denominator = 1;
for(int i=0;0<iterations;i++){
if(i%2 == 0){
EstimatedPi=EstimatedPi + (1/denominator);
}
else{
EstimatedPi=EstimatedPi-(1/denominator);
}
denominator=denominator+2;
EstimatedPi=EstimatedPi*4;
System.out.println(EstimatedPi);
}
}
}
我不认为我在整个程序中将零除!莱布尼兹公式:https : //en.wikipedia.org/wiki/Leibniz_formula_for_π 控制台屏幕截图: 我的repl项目的屏幕快照链接:https : //repl.it/@HarryPengRHS/Determining-the-value-of-pi-pi-日属性
问题来源:Stack Overflow
您的for循环条件是错误的,应该是for (int i = 0; i < iterations; i++) 您一直在使用for(int i=0;0<iterations;i++){ 0<iterations,这始终是正确的,并且循环变为无限。
public class Main {
public static void main(String[] args) {// in order to celebrate pi day I have made this program that calculates pi
// with the Leibniz Formula
System.out.println("enter the number of iterations you want:");
double EstimatedPi = 0;
Scanner input = new Scanner(System.in);
double iterations = input.nextDouble();
double denominator = 1;
for (int i = 0; i < iterations; i++) {
if (i % 2 == 0) {
EstimatedPi = EstimatedPi + (1 / denominator);
} else {
EstimatedPi = EstimatedPi - (1 / denominator);
}
denominator = denominator + 2;
EstimatedPi = EstimatedPi * 4;
System.out.println(EstimatedPi);
}
}
}
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。