2016-11-03 52 views
0

循環有人可以幫我指出這兩個循環之間的區別嗎?他們看起來可能會做同樣的事情,但事實並非如此。For Java Swing中使用索引

 for(int i = 0; i < shapes.size() - 1; i++) { 
      Graphics2D g2d = (Graphics2D) g; 
      shapes.get(i).paint(g2d); 
     } 

如何在沒有i(索引)的情況下編寫我的第一個for循環?

 for(Shape shape : shapes) { 
      Graphics2D g2d = (Graphics2D) g; 
      shape.paint(g2d); 
     } 
+0

第一個忽略集合中的最後一個項目,第二個命中所有項目。你爲什麼要問?你看到什麼行爲差異? –

+0

我想繪製ArrayList中的所有項目。第二個是正確的:當你拖動鼠標時,它按順序繪製所有的形狀。第一個在拖動鼠標時繪製形狀,但在釋放時消失。然後,當您繪製第二個形狀時,第一個形狀再次出現。 – Rain

+0

那麼你的第一個循環是壞的。 –

回答

2

他們看起來像他們可能會做同樣的事情,但事實並非如此。

第一個循環會忽略集合中的最後一個形狀,而第二個循環會碰到所有項目。要修復第一個,請刪除- 1部分。即改爲:

Graphics2D g2d = (Graphics2D) g; 
for(int i = 0; i < shapes.size(); i++) { 
    shapes.get(i).paint(g2d); 
} 
+0

感謝您的幫助!你幫我解決了這個問題。 10分鐘後我會接受你的回答。 :) – Rain