计算广义调和数时出现数组下标越界异常问题求助
解决Java广义调和数程序的ArrayIndexOutOfBoundsException及命令行参数问题
问题根源
ArrayIndexOutOfBoundsException和循环条件无关,完全是因为运行程序时没有传入足够的命令行参数。当你没传参数时,args数组长度为0,直接访问args[0]和args[1]必然触发数组越界异常。
Mac命令行正确运行步骤
你之前没掌握正确的传参方式,按以下步骤操作:
- 编译代码:打开终端,进入代码所在目录,执行
javac Main.java,生成Main.class字节码文件 - 运行并传参:执行
java Main n r,把n和r替换成你需要的整数。比如计算第5个2阶广义调和数,就输入java Main 5 2
代码优化建议
可以添加参数校验逻辑,避免无参、参数数量不对或参数非法时程序崩溃,修改后的代码如下:
public class Main { public static void main(String[] args) { // 检查参数数量是否符合要求 if (args.length != 2) { System.out.println("请传入两个整数参数:n 和 r"); System.out.println("示例:java Main 5 2"); return; } try { int n = Integer.parseInt(args[0]); int r = Integer.parseInt(args[1]); // 校验n为正整数(广义调和数的n通常要求是正整数) if (n <= 0) { System.out.println("n必须是正整数"); return; } double sum = 0; // 用double类型精度更高,减少计算误差 for (int i = 1; i <= n; i++) { sum += 1 / Math.pow(i, r); } System.out.println(sum); } catch (NumberFormatException e) { System.out.println("请传入有效的整数参数"); } } }
内容的提问来源于stack exchange,提问作者silly_bear_11
相关产品推荐
相关产品推荐

