提问人:silly_bear_11 提问时间:7/5/2023 最后编辑:silly_bear_11 更新时间:7/6/2023 访问量:42
计算广义谐波数时的数组索引越界错误
Array Index Out Of Bounds Error When Computing Generalized Harmonic Numbers
问:
java 初学者。尝试制作接受 2 个命令行参数 (n, r) 并使用 for 循环来计算 r 阶的第 n 个广义谐波数的代码。
我一直收到错误“ArrayIndexOutOfBoundsException”,我不知道为什么。在循环中,我尝试了 i < n 和 i<=n 并不断得到相同的结果。
代码如下:
public class Main {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
int r = Integer.parseInt(args[1]);
float sum = 0;
for (int i = 1; i <= n; i++) {
sum += 1 / Math.pow(i, r);
}
System.out.println(sum);
}
}
编辑:我正在从mac命令行运行程序,它根本不允许我输入参数。对不起,如果这遗漏了一些非常明显的东西。
答:
3赞
Andrej Istomin
7/6/2023
#1
我相信这个误差与你的谐波数无关。输入值是问题所在。如果您仔细查看异常,您会发现它被抛出在从命令行参数中提取参数的行中。因为这是您在代码中使用数组的唯一位置。args[N]
请尝试以下代码:
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("The program requires 2 arguments. You provided " + args.length);
return;
}
int n = Integer.parseInt(args[0]);
int r = Integer.parseInt(args[1]);
float sum = 0;
for (int i = 1; i <= n; i++) {
sum += 1 / Math.pow(i, r);
}
System.out.println(sum);
}
你会看到你的论点不知何故没有提供。检查如何运行程序。
评论
1赞
silly_bear_11
7/6/2023
谢谢!我实际上把我的论点输入错了,我为这样一个愚蠢的错误感到抱歉。
1赞
Andrej Istomin
7/6/2023
@silly_bear_11没问题,它总是发生在:)如果我的回答有帮助,如果你能打这个绿色的复选框,我将不胜感激,你接受了它:)提前致谢!
1赞
silly_bear_11
7/7/2023
刚刚点击复选标记,现在它在我这边说它被接受。再次感谢!
评论
ArrayInexOutOfBoundsException
args
java -cp myClass 5 3