我正在使用一本书学习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);
}
答案 0 :(得分:9)
此ArrayIndexOutOfBoundsException: 0
表示索引0
不是数组args[]
的有效索引,这反过来意味着您的数组为空。
在main()
方法的这种特殊情况下,这意味着在命令行上没有参数传递到您的程序。
如果您从命令行运行程序,请不要忘记在命令中传递2个参数。
如果您在Eclipse中运行程序,则应在运行配置中设置命令行参数。转到Run > Run configurations...
,然后为运行配置选择Arguments
选项卡,并在程序参数区域中添加一些参数。
请注意你应该处理没有给出足够参数的情况,在main方法的开头有类似的东西:
if (args.length < 2) {
System.err.println("Not enough arguments received.");
return;
}
这会优雅地失败,而不是让你的程序崩溃。
答案 1 :(得分:2)
此代码在运行时需要获得两个参数(args
数组)。
访问args[0]
导致java.lang.ArrayIndexOutOfBoundsException
的事实意味着您没有传递任何内容。