-1

私のコード:

Object tempDifference;
Object testUser;
testUser = users.get(0);
it8 = difference_time.iterator();
it9 = users.iterator();
Object tempUser;
tempDifference = difference_time.get(0);

while (it9.hasNext()) {
  tempUser = it9.next();
  System.out.println(testUser+" "+tempUser);
  if (testUser.equals(tempUser)) {
    times.add(tempDifference);
    testUser = tempUser;
  } else {
    times.add(value);
    testUser = tempUser;
  }
  tempDifference = it8.next();
}
  • 入力は次のとおりです。1 2 2

  • 出力は次のとおりです。1 1

  • アウトプットしたい1 2

1 1最初の出力が悪いのはなぜですか?

4

1 に答える 1

1

ほとんどのイテレータは最初の要素の前に開始されるため、最初の next() の呼び出しはそれらを 2 番目ではなく最初の要素に移動します。

したがって、users = {1, 2} の場合、やや煮詰めると、次のようになります。

//set test = 1, the first entry in the list
test = users.get(0); 
//get a new iterator, starting before the first element
it9 = users.iterator(); 
// move to first element (the next one), so temp == 1
temp = it9.next(); 
// print values "1 1"
System.out.println(test+" "+temp);
于 2012-12-05T18:59:09.283 に答える