java.lang.ArrayIndexOutOfBoundsException : 0 异常

标签 java arrays exception indexoutofboundsexception

我正在通过一本书学习 Java。有这个练习我无法正常工作。它使用 java 类 Double 添加两个 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);

}

最佳答案

问题

这个 ArrayIndexOutOfBoundsException: 0 意味着索引 0 不是数组 args[] 的有效索引,这反过来意味着你的数组是空的。

main() 方法的这种特殊情况下,这意味着没有参数被传递到您在命令行上的程序。

可能的解决方案

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

  • 如果您在 Eclipse 中运行您的程序,您应该在运行配置中设置命令行参数。转到 Run > Run configurations...,然后为您的运行配置选择 Arguments 选项卡,并在 program arguments 区域添加一些参数。

请注意,您应该处理没有提供足够参数的情况,在您的 main 方法的开头使用类似这样的内容:

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

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

关于java.lang.ArrayIndexOutOfBoundsException : 0 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456742/

相关文章:

c# - 如何在C#代码中获取当前项目名称?

java - 在TeamCity上使用Gradle构建时失败:任务:app:processDebugResources失败

javascript - 将一个数组插入另一个数组 - 嵌套

c - 如何在 C 中复制一个 char 数组?

java - try/catch 与 InputMismatchException 会创建无限循环

exception - 使用 ADSI 时 Powershell 脚本返回异常

java - 在 JUnit 测试套件之前运行的代码或专门设置将首先执行和最后执行的测试。 (仅第一个和最后一个,不是全部)

java - 在java中对每个方法使用一个大的try-catch是一种已知的好习惯吗?

java - Hibernate Criteria 连接到包含外键的表

c - 如何制作未装箱的 float 组,我可以获取 Ptr