You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用while循环结合用户输入近似计算Pi并修复现有代码问题

问题修复说明

现有代码的问题列表

  • 语法不完整:缺少java.util.Scanner的导入语句,while循环没有闭合的右大括号,代码无法通过编译
  • 变量逻辑冲突:初始定义的n原本是作为项数计数器,后续又将用户输入的迭代次数赋值给n,两个逻辑共用一个变量导致逻辑完全混乱
  • 死循环问题:while循环条件n <= n+1恒成立,程序运行后会进入无限循环无法停止
  • 计算逻辑错误:莱布尼茨公式需要累加每一项的计算结果,现有代码每次直接给pi赋值,会覆盖之前的计算结果,完全不符合公式要求
  • 输出逻辑错误:示例只要求迭代完成后输出一次最终结果,现有代码在循环内每次迭代都打印pi,不符合输出要求

修复后的完整代码

import java.util.Scanner;

public class PiCalculate {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        double pi = 0.0;
        int termIndex = 0; // 项数,从0开始计数

        System.out.print("How many iterations would you like to do: ");
        int iterationCnt = scnr.nextInt();

        while (termIndex < iterationCnt) {
            pi += (Math.pow(-1, termIndex) * 4.0) / (2.0 * termIndex + 1);
            termIndex++;
        }

        System.out.printf("pi:\t\t%.15f\n", pi);
        scnr.close();
    }
}

运行后输入1000即可得到和示例完全一致的输出结果。

内容的提问来源于stack exchange,提问作者sir gregor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:05