ArrayIndexOutOfBounds仅在打印时

时间:2015-05-01 09:07:06

标签: java indexoutofboundsexception

我不明白为什么会这样。没有print语句代码工作正常,但当我尝试打印元素时,我得到ArrayIndexoutOfBounds。例如,如果我尝试提供3个元素,我会抛出异常。任何人都可以解释

class MyClass
{
    int search(OtherClass obs,target) {
        double a[]=new double[obs.length];
        for(int i=0;i<obs.length;i++)
        {
            a=obs[i].getTarget();
            System.out.println(a[i]);//without this it does not throw
        }
    }
}

class OtherClass
{
    String Target;

    public String getTarget() {
        return target;
    }

    public void setTarget(String target) {
        this.target = target;
    }
}

3 个答案:

答案 0 :(得分:2)

System.out.println(a) 

但不是

System.out.println(a[i])

答案 1 :(得分:0)

您应该使用此语句,此语句会将值从obs[i].getTarget()设置为a[i]

a[i]=obs[i].getTarget();

<强>编辑:

如果getTarget()方法返回一个数组,那么就可以这样,

for(int i=0;i<obs.length;i++)
{
    double a[] =obs[i].getTarget(); // putting the array from getTarget() to a[]
    for(int j=0;j<a.length;j++)
    System.out.println(a[j]);//printing all the values of a[]
}

答案 2 :(得分:0)

在您的代码obs中有一个数组:obs[i];该数组的每个位置本身就是其他数组:obs[i].getTarget() #=> double[]我想,如果真的obs有一个名为getTarget()的方法,它返回一个数组....可能这个?

double a[] = new double[obs.length];
double obsArray[] = obs.getTarget();
for(int i=0; i<obs.length; i++){
 a[i] = obs[i];
 System.out.println(a[i]);
}