【问题标题】:Why am I getting an "ArrayIndexoutofBound" error in my Java program?为什么我的 Java 程序中出现“ArrayIndexoutofBound”错误?
【发布时间】:2014-11-30 18:31:16
【问题描述】:

需要了解后续程序的流程。 输出应该是什么? 当我编译这个程序时,我得到了“ArrayIndexoutofBound”错误。

public class test {

   public static void main(String args[]) { 

      Integer intObj=Integer.valueOf(args[args.length-1]);
      int i = intObj.intValue();

      if(args.length > 1) 
         System.out.println(i);
      if(args.length > 0)
         System.out.println(i - 1);
      else 
         System.out.println(i - 2);
   }
}

【问题讨论】:

  • 很容易看出这是怎么发生的:如果你没有命令行参数,args 数组就没有任何值。
  • 你输入的是command-line arguments吗?如果你没有任何异常,你会得到那个异常。
  • 根据错误和代码,我认为您必须提供至少 1 个命令行参数。 ArrayIndexOutOfBounds 发生在您未能做到这一点时。当您提供一个程序后,该程序应该可以正常运行。
  • 一个空数组的长度为 0,args[-1] 未定义。
  • 如果我在没有任何命令行参数的情况下传递 args[],​​那么默认情况下数组值的大小将为 0 ??

标签: java exception workflow indexoutofboundsexception value-of


【解决方案1】:

"ArrayIndexoutofBound" : 抛出一个表示数组被非法索引访问。索引为负数或大于等于数组的大小。

所以可能你没有传递任何命令行参数。所以args.Lenght 返回 0。

所以这里:

Integer intObj=Integer.valueOf(args[0-1]);

Index 是负数,这就是 JVM 抛出 "ArrayIndexoutofBound"

的原因

【讨论】:

  • 整数 intObj=Integer.valueOf(args[10-1]);输出:9 错误 arrayIndexOutOfBound.
【解决方案2】:

添加一些输入检查 Integer.valueOf(args[args.length-1]); 之前是否存在某些输入并添加一些输入信息来执行。

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2021-08-11
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多