ArrayIndexOutOfBounds 仅在打印时

ArrayIndexOutOfBounds only at print

我不明白为什么会这样。没有 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;
    }
}
System.out.println(a) 

但不是

System.out.println(a[i])

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

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

已编辑:

如果getTarget()方法returns一个数组那么你可以这样,

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[]
}

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

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]);
}