在返回方法中访问数组

时间:2013-11-14 21:19:48

标签: java arrays

晚上好人,

我有一个创建,填充和返回数组的方法,如下所示:

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

这将打印出返回的数组,但是,我想知道如何以“经典”的方式做到这一点。我知道这一定是非常新手,但我找不到答案。任何形式的帮助将不胜感激。

3 个答案:

答案 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()。如果您要将此概念扩展到更大的用例,则性能影响将是巨大的。