【问题标题】:Java console printing out "infinity" infinite times instead of value?Java控制台打印出“无限”无限次而不是价值?
【发布时间】:2020-03-15 03:42:46
【问题描述】:

我正在尝试制作一个程序,用莱布尼茨方程作为 pi day 的属性来估计 pi,但是不是打印出我想要控制台的估计 pi ​​值,而是无限次打印出“无穷大”,直到我终止执行。我很困惑,需要帮助! 代码:

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_π 控制台截图: screenshot 链接到我的 repl 项目: https://repl.it/@HarryPengRHS/Determining-the-value-of-pi-pi-day-attribute

【问题讨论】:

  • System.out.println("Happy " + Math.PI + " day");
  • @ElliottFrisch 没用的人 :(
  • 您的代码正试图逼近 Java 提供的常量。不要除以零。想不出另一个你会得到无穷大的原因。试试调试器。
  • 嗯,我目前正在一个名为 repl.it 的网站上编码,如何使用调试器?
  • 请问为什么迭代是双倍而不是长周期?

标签: java loops exception console


【解决方案1】:

您的 for 循环条件错误,应该是 for (int i = 0; i &lt; iterations; i++) 你使用的是for(int i=0;0&lt;iterations;i++){ 0&lt;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);
        }
    }
}

【讨论】:

    【解决方案2】:

    我遇到了同样的问题(控制台打印“-Infinity”)。

    对我来说,我试图取一个空数组的最大值

    Math.max(...[]) 打印 -Infinity

    希望这可以帮助遇到此问题的其他人

    【讨论】:

      猜你喜欢
      • 2022-11-22
      • 2023-03-03
      • 2018-03-25
      • 2019-08-31
      • 2016-07-07
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多