java.lang.ArrayIndexOutOfBoundsException: 0

7

我正在用一本书学习Java。有一个练习我做不好,它使用Java类Double来将两个双精度浮点数相加。当我尝试在Eclipse中运行这段代码时,它会给我输出标题中的错误信息。

public static void main(String[] args) {

    Double d1 = Double.valueOf(args[0]);
    Double d2 = Double.valueOf(args[1]);
    double result = d1.doubleValue() + d2.doubleValue();
    System.out.println(args[0] + "+" + args[1] + "=" + result);

}

9
你是否传递了命令行参数,也就是 args[0]args[1] 的值? - Pradeep Simha
对于任何“真正”的Java应用程序(不是测试用例或玩具),在访问单个args值之前,您应该检查args.length。 - Hot Licks
2个回答

15

问题

ArrayIndexOutOfBoundsException: 0 表示你的数组 args[] 中索引为 0 的位置不是一个有效的索引,这意味着你的数组为空。

main() 方法中特别是指没有在命令行中向程序传递参数。

可能的解决方案

  • 如果你在命令行中运行程序,请不要忘记在命令中传递 2 个参数(2 是因为你访问了 args[0]args[1])。

  • 如果你在 Eclipse 中运行程序,应该在运行配置中设置命令行参数。进入 Run > Run configurations... 然后选择你的运行配置的 Arguments 标签,在 program arguments 区域添加一些参数。

请注意,你应该处理参数不足的情况,例如在 main 方法的开头添加类似以下代码:

if (args.length < 2) {
    System.err.println("Not enough arguments received.");
    return;
}

这将会优雅地失败,而不是让你的程序崩溃。


3

运行此代码时,它期望得到两个参数(即args数组)。 访问args [0]导致java.lang.ArrayIndexOutOfBoundsException的事实意味着您没有传递任何参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接