0

以下のループは短く停止してから再開するようです。別のループの内側ではありません。最初のLog呼び出しは36を出力するため、外側のforループは36回実行する必要があります。ただし、ループ内のLog呼び出しは、ループが実行された回数を出力することを意味し、「0」から「4」までを出力します。これは、ループが5回しか実行されなかったことを意味します。このプロセスを最初からやり直して、最初のLog呼び出しが再度発生し、ループが5回だけ実行されるようにする理由はありますか?Logcatの出力によると、これは2回発生します。

ArrayList<RunData_L> rdUP = t.getMyPositiveRunData();
ArrayList<RunData_L> rdDOWN = t.getMyNegativeRunData();
Log.d("rdUP size", rdUP.get(0).getMyMeasurementData().size() + "");
for (int i = 0; i < rdUP.get(i).getMyMeasurementData().size(); i++) {
   Log.d("i", i + "");
   ArrayList<BigDecimal> tempUP = new ArrayList<BigDecimal>(), tempDOWN = new ArrayList<BigDecimal>();
   for(int j = 0; j < rdUP.size(); j++) {
      tempUP.add(rdUP.get(j).getMyMeasurementData().get(i));
      tempDOWN.add(rdDOWN.get(j).getMyMeasurementData().get(i));
   }
   pdUP.add(tempUP);
   pdDOWN.add(tempDOWN);
}
4

1 に答える 1

0

私のコメントによるとrdUP.get(j)、内側のループでの使用が問題の原因であると思われます。

rdUP.get(i).getMyMeasurementData()最初に、ループの境界条件として外側のループのサイズを確認するためにテストします。したがって、 iは0からのサイズまで実行されますrdUP.get(i).getMyMeasurementData()

次に、内側のループは、rdUPの各要素を調べて、からi番目の値を取得するように指示しrdUP.get(j).getMyMeasurementData()ます。j番目のrdUPがあなたを満足させるのに十分な要素を持っていることをどうやって知っていますget(i)か?

于 2012-07-26T18:57:44.713 に答える