【问题标题】:adding counter in enhanced for loop在增强的 for 循环中添加计数器
【发布时间】:2023-03-08 03:11:01
【问题描述】:

我有一个代码,它从用户那里获取姓名和号码,并将它们作为对象保存在数组列表中。

我正在使用这个增强的 for 循环来打印存储在该数组列表中的所有名称和数字...

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

它的打印方式类似于 姓名:blah blah 编号:blah blah

现在我想在名称和数字之前添加计数器编号 1.姓名:blah blah 编号:blah blah 2.姓名...号码 3.姓名...号码

...我该如何添加?如果我在这个 for 循环中使用另一个 for 循环来添加计数器编号……它会一次又一次地打印。

【问题讨论】:

  • 我的观点是,如果你需要索引,你应该坚持使用带有索引变量的旧for循环。

标签: java loops for-loop foreach counter


【解决方案1】:

你可以试试——

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

【讨论】:

  • 可能值得解释一下你添加了什么? (而且我认为你的 +1 放错地方了)
【解决方案2】:

在增强的 for 循环之外声明一个计数器变量。

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());
 }

【讨论】:

  • 另一种避免“无用变量”的方法是在整个批次周围包裹另一个块以进行局部范围界定 - { int i = 0; for(...){...} }
  • @IanRoberts 好吧,如果您需要索引,恕我直言,坚持旧方法更简单且更具可读性。
  • 如果我想打印索引号而不是计数器,我该怎么做?
  • 在顶部方法中,将计数器从++i更改为i++,它会打印索引。
  • @Joffrey 假设是一个随机访问列表,是的,但是如果您只有一个 List 并且不知道它是 ArrayList 还是 LinkedList,那么最好坚持使用基于迭代器的遍历。
【解决方案3】:

这应该可行:

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

遗憾的是,无法从增强的 for 循环中提取迭代索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 2018-06-11
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多