2012-12-05 209 views
-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

+0

AAAH,好老的功課:) – evilone

+4

請使用英文單詞,而在SO發佈您的代碼。很難區分變量名稱。並請張貼所有相關的代碼。您尚未發佈您正在使用的清單的聲明和初始化。 –

+0

該代碼看起來很糟糕。請清理它並添加缺少的部分。 – Uli

回答

1

大多數迭代器在第一個元素開始之前,所以第一次調用next()會將它們移動到第一個元素,而不是第二個元素。

所以,如果用戶= {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); 
+0

我可以做些什麼來使它不會如此? – Majkl

+1

這就是它們的工作方式......你可以在創建它之後立即調用它9.next(),它會將它移動到第一個條目,然後在你的循環中下一個調用next(),返回第二個條目在列表中。 – femtoRgon