晚上好人,
我有一个创建,填充和返回数组的方法,如下所示:
public double[] getTotalDistances(){
double[] distance;
distance = new double[3];
for(Activity r: diary ){
if(r instanceof Run){
distance[0] += r.getDistance();
}
}
return distance;
}
我似乎无法找到一种方法来访问这个返回的数组,以便在main方法中打印出来,我试过这个:(其中m是我实例化的对象)
for(int i = 0; i< m.getTotalDistances().length; i++){
System.out.println(m.getTotalDistances().distance[i]);
}
这说它无法找到可变距离。
我知道我可以做类似的事情:
for(double i: m.getTotalDistances()){
System.out.println(i);
}
这将打印出返回的数组,但是,我想知道如何以“经典”的方式做到这一点。我知道这一定是非常新手,但我找不到答案。任何形式的帮助将不胜感激。
答案 0 :(得分:2)
在迭代之前使用变量来存储它。
double[] distance = m.getTotalDistances();
for(int i = 0; i < distance.length; i++){
System.out.println(distance[i]);
}
您的方法会在循环内反复调用getTotalDistances()
方法。你只需要一次就可以使用它。
您收到此错误
这说它无法找到可变距离。
因为变量distance
仅在方法getTotalDistances()
的范围内已知,因此您不能在其之外使用它(并且它也没有意义)。
答案 1 :(得分:2)
应该是m.getTotalDistances()[i]
而不是m.getTotalDistances().distance[i]
答案 2 :(得分:1)
编写方式,distance
未定义。如果要引用返回值,则需要创建指针。
double[] distance = getTotalDistances();
for(int i = 0; i < distance.length; i++) {
System.out.println(distance[i]);
}
另外,在编写时,除了第一个以外的任何值都将始终为0,并且累加器更有意义。
需要注意的另一点是,在编写时,getTotalDistances()
将在for
循环的每次迭代中运行两次;一次为条件,一次为println()
。如果您要将此概念扩展到更大的用例,则性能影响将是巨大的。