2014-09-10 343 views
0

我有一個代碼,它需要用戶的名稱和編號,並將它們保存在一個數組列表中作爲對象。在增強for循環中添加計數器

我使用這個增強的for循環印出所有的名字和它存儲在ArrayList中數...

for(Objectclass p : Test) { 
    System.out.println("Name: " + p.getName() + " Number: " + p.getNumber()); 
    } 

它打印像名稱:等等等等編號:等等等等

現在我想添加前面的名稱和編號的計數器,如 1.名稱:等等等等編號:等等等等 2.姓名...編號 3.姓名...編號

...我該如何補充?如果我在循環內使用另一個for循環來添加計數器編號......它會一次又一次地打印。

+0

我的觀點是,如果你需要的指數,你應該堅持與索引變量老'for'循環。 – Joffrey 2014-09-10 12:44:13

回答

4

在增強型for-loop之外聲明一個計數器變量。

int i = 0; 
for(Objectclass p : Test) { 
    System.out.println(++i + ". Name: " + p.getName() + " Number: " + p.getNumber()); 
} 

或者,你沒有一個無用的變量後,切換回舊的方法。

for(int i = 0; i < Test.size();){ 
    Objectclass p = Test.get(i++); 
    System.out.println(i + ". Name: " + p.getName() + " Number: " + p.getNumber()); 
} 
+0

避免「無用變量」的另一種方法是將整個批次的另一個塊包裝爲本地範圍 - 「{int i = 0;對於(...){...}}' – 2014-09-10 12:42:31

+0

@IanRoberts那麼,如果你需要索引,堅持舊的方法恕我直言更簡單,更具可讀性。 – Joffrey 2014-09-10 12:43:18

+0

如果我想打印出索引號而不是計數器,我該怎麼做? – jtfkyo 2014-09-10 12:47:07

0

這應該工作:

int i = 0; 
for(Objectclass p : Test) 
{ 
    i++; 
    System.out.println(i + ". Name: " + p.getName() + " Number: " + p.getNumber()); 
} 

可悲的是,沒有提取增強的for循環迭代指數的方式。

0

你可能嘗試 -

for(Objectclass p : Test) { 
    System.out.println("Index: " + Test.indexOf(p+1) + "Name: " + p.getName() + " Number: " + p.getNumber()); 
} 
+0

可能值得說明你添加了什麼? (我認爲你在錯誤的地方得到了+1) – Rup 2014-09-10 15:48:55