我不明白为什么会这样。没有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;
}
}
答案 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]);
}