英文:
Java console printing out "infinity" infinite times instead of value?
问题
我正试图制作一个程序,使用莱布尼茨公式估计圆周率,作为庆祝圆周率日的一部分。然而,与其打印出我想要的估计圆周率值,控制台却打印出了“无穷大”,一直打印直到我终止执行。我非常困惑,需要帮助!
代码:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
//为了庆祝圆周率日,我制作了这个使用莱布尼茨公式计算圆周率的程序
System.out.println("请输入您想要的迭代次数:");
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);
}
}
}
我认为在整个程序中我没有除以零的情况!
莱布尼茨公式:
https://en.wikipedia.org/wiki/Leibniz_formula_for_π
控制台截图:
screenshot
我的repl项目链接:
https://repl.it/@HarryPengRHS/Determining-the-value-of-pi-pi-day-attribute
英文:
I am trying to make a program that estimates pi with the Leibniz equation as an attribute to pi day, however instead of printing out the estimated pi value that I wanted the console is printing out "infinity" for infinite times until I terminate the execution. I am very very confused, help needed!
code:
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);
}
}
}
I don't think I divided anything by zero in the entire program!
the Leibniz formula:
https://en.wikipedia.org/wiki/Leibniz_formula_for_π
console screenshot:
screenshot
link to my repl project:
https://repl.it/@HarryPengRHS/Determining-the-value-of-pi-pi-day-attribute
答案1
得分: 1
Your for loop condition is wrong it should be for (int i = 0; i < iterations; i++)
you were using for(int i=0; 0 < iterations; i++){
0 < iterations
which is always true and loop goes to infinite.
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);
}
}
}
英文:
Your for loop condition is wrong it should be for (int i = 0; i < iterations; i++)
you were using for(int i=0;0<iterations;i++){
0<iterations
which is always true and loop goes to infinite.
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);
}
}
}
答案2
得分: 0
我遇到了同样的问题(控制台打印“-Infinity”)。
对我来说,我正在尝试对一个空数组取最大值
Math.max(...[])
打印出 -Infinity
希望这能帮助其他遇到这个问题的人。
英文:
I ran into this same issue (console printing "-Infinity").
For me, I was trying to take the maximum of an empty array
Math.max(...[])
prints -Infinity
Hope this helps somebody else that runs into this problem
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论