2014-09-10 348 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