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