簡體   English   中英

在返回方法中訪問數組

[英]Accessing array in a return method

晚上好,人們,

我有一個創建,填充並返回數組的函數調用方法,如下所示:

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

這將打印出返回的數組,但是,我想知道如何以“經典”方式進行操作。我知道這必須是非常新手,但我找不到答案。 任何幫助將不勝感激。

在迭代之前使用變量存儲它。

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

您的方法將在循環內反復調用getTotalDistances()方法。 您只需要使用一次即可。

你得到這個錯誤

這表示找不到可變距離。

因為可變distance僅在您的方法getTotalDistances()的范圍內是已知的,因此您不能在該范圍之外使用它(也沒有任何意義)。

應該是m.getTotalDistances()[i]而不是m.getTotalDistances().distance[i]

書寫方式, distance未定義。 如果要引用返回值,則需要創建一個指針作為返回值。

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

同樣,在編寫時,除第一個值以外的任何值都將始終為0,並且累加器更有意義。

需要注意的另一件事是,正如所寫的那樣, getTotalDistances()將在for循環的每次迭代中運行兩次; 一次用於條件,第二次用於println() 如果要將此概念擴展到更大的用例,那么對性能的影響將是巨大的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM