如何使用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
相关产品推荐
相关产品推荐

