为什么我会收到名为java.lang.ArrayIndexOutOfBoundsException的错误?

时间:2013-01-14 05:37:45

标签: java exception

我在64位Linux系统上用Java编写了这段代码:

    class WrapperClass1
    {
       public static void main(String s [])
       {
            int noinput=s.length;
            System.out.println("Number of values entered is :- " + noinput);
            System.out.println( s[0] + "," + s[1] );
            int x = Integer.parseInt(s[0]);
            int y = Integer.parseInt(s[1]);
            int z = x + y;
            System.out.println(" Sum = " + z);
       }
    };

现在,当我尝试编译它时,它成功编译,但是当我执行程序时,它向我显示一个名为:

的异常
           Number of values entered is :- 0
           Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
           at WrapperClass1.main(WrapperClass1.java:7)

4 个答案:

答案 0 :(得分:0)

您没有传递导致此问题的任何参数。

ArrayIndexOutOfBoundsException

  

抛出表示已使用非法访问数组   指数。该指数为负数或大于或等于   数组的大小。

在您的情况下,您在执行程序时没有通过。因此,在访问s[0]s[1]时会抛出异常。

答案 1 :(得分:0)

你的数组是空的,所以,当你试图像s [0]那样弹出项目时,它会抛出这个异常,因为它没有任何东西。

答案 2 :(得分:0)

输入:字符串[]

哪种方法? - > main(String[] args)

什么时候给? - &GT;我们说要java <className> <input1> <input2> ...执行

什么时候抛出ArrayIndexOutOfBoundsException? - &GT;

Initial:String s []

但在初始化变量(数组)之前,尝试访问不可用的索引......

解决方案:通过命令提供输入(因为这些是命令行参数)

即使没有给出输入,如何避免错误? - &GT;检查数组的大小,

希望这有帮助

答案 3 :(得分:0)

您应该考虑使用 if 语句来检查noinput是否至少为2.然后您可以自由地使用s [0]和s [1]而不会获得{{1 }}