0

各位晚安

我有一个方法可以创建、填充并将数组返回给函数调用,如下所示:

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

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

4

3 回答 3

2

在迭代之前使用变量来存储它。

double[] distance = m.getTotalDistances();
for(int i = 0; i < distance.length; i++){
        System.out.println(distance[i]);
}

您的方法会getTotalDistances()在循环内一遍又一遍地调用您的方法。您只需要使用一次即可。

你得到这个错误

这表示它找不到可变距离。

因为该变量distance仅在您的方法范围内是已知的getTotalDistances(),因此您不能在此之外使用它(而且它也没有任何意义)。

于 2013-11-14T21:20:54.420 回答
2

它应该是m.getTotalDistances()[i]而不是m.getTotalDistances().distance[i]

于 2013-11-14T21:23:41.583 回答
1

它的编写方式,distance没有定义。如果要引用返回值,则需要创建一个指针。

double[] distance = getTotalDistances();
for(int i = 0; i < distance.length; i++) {
    System.out.println(distance[i]);
}

此外,正如它所写的那样,除第一个之外的任何值都将始终为 0,并且累加器更有意义。

另一件需要注意的是,正如它所写的那样,getTotalDistances()每次循环迭代都会运行两次for;一次用于条件,一次用于println(). 如果您要将这个概念扩展到更大的用例,性能影响将是巨大的。

于 2013-11-14T21:26:28.480 回答