线程" main"中的例外情况java.lang.ArrayIndexOutofBounds异常:0在运行时

时间:2014-06-05 10:59:21

标签: java

我有错误ArrayIndexOutofBounds。请帮帮我,我是java的新手。

class Sum{
   int a,b,c;
   void assign (int x, int y){
      a=x;
      b=y;
   }
   void add(){
     c=a+b;
   }
   void disp(){
     System.out.println("Sum of"+a+"and"+b+"is ="+c);
   }
}
class SumDemo{
   public static void main(String k[]){
      int x=Integer.parseInt (k [0]);
      int y=Integer.parseInt (k [1]);
      Sum s0=new Sum();
      s0.assign(x,y);
      s0.add();
      s0.disp();
   }
}

这是代码。请帮我 。为什么会出现这种错误?

4 个答案:

答案 0 :(得分:1)

  

为什么会出现此错误?

发生错误是因为您尝试访问没有元素零的数组的元素零。 ArrayIndexOutOfBoundsException的javadoc解释了这一点。该消息提供了代码尝试使用的实际索引。 (javadocs没有说明消息包含的内容,但这是我记得的所有JVM的观察行为。)

所以一定是这一行:

    int x=Integer.parseInt (k [0]);

您的代码应测试k数组(k.length)的长度,以确保(至少)有2个命令行参数。


你写道:

  

......错误在于我没有通过运行时间值......

这是一个诊断。另一个是您的程序不检查它是否使用正确数量的命令行参数调用它。 (两种诊断都是正确的......以他们自己的方式。)

答案 1 :(得分:0)

当你运行它时,你没有传递k [0]和k [1]所需的命令行参数。

if (k.length < 2) {
  System.err.println("Missing arguments x and y, exiting.");
  System.exit(1);
}
int x=Integer.parseInt (k [0]);
int y=Integer.parseInt (k [1]);

答案 2 :(得分:0)

如果您没有传递任何程序参数,这些行是有问题的:

int x=Integer.parseInt (k [0]);
int y=Integer.parseInt (k [1]);

如果从命令提示符运行,请使用:

java SumDemo 1 2 

如果您使用的是Eclipse IDE,则可以使用Run Configurations

设置这些参数

答案 3 :(得分:0)

唯一的原因可能是您在运行程序时没有输入参数。

以java SubDemo 2 3

运行