【问题标题】:java eclipse iterator debugger problemjava eclipse迭代器调试器问题
【发布时间】:2010-08-30 08:59:02
【问题描述】:

[编辑:我忘了说这是我正在调试的 JUnit 测试用例。有问题吗?]

我在 Eclipse 中有一个非常奇怪的问题。 (我是在 Eclipse 中调试的新手,所以发布所有你的想法......)

当我在某一行时,它会停止在代码中走得更远。尽管我按 F6 千次,但它仍然在同一行。在很短的时间内,这条线没有被标记,但随后又被标记了。没有例外...

这一行看起来像:

while (someIterator.hasNext()) {...}

我一点也不明白。真奇怪。到底怎么回事。 如果 Iterator 有 next 则必须进入 while 循环,如果不是则必须跳过 while 循环。我只是不明白...

非常感谢您的回答。我现在很糟糕

面向 Web 开发人员的 Eclipse Java EE IDE。 版本:Helios 发布 内部版本号:20100617-1415

【问题讨论】:

  • 格式化您的代码,无需使文本变得粗大。尝试 F5 进入被调用的方法。
  • F5 也不做任何事情。但如果它会做任何事情,我认为这不会有帮助,因为我会更深入地研究 LinkedList(Java 的一部分)的代码。
  • 为什么Iterator 大写I
  • 对不起,不是班级!我的意思是迭代器。我现在已经编辑了一些迭代器
  • 集合中的数千个元素导致循环中的“F6 千次”?

标签: java eclipse iterator debugging


【解决方案1】:

【讨论】:

    【解决方案2】:

    将循环主体放在不同的行上,以便您查看问题所在。如果将所有内容放在一行上,Eclipse 可能无法清楚地显示正在发生的事情。如果集合类是标准的,那么问题不太可能出在迭代器上,除非您设法以某种方式将链表链接到不太可能发生的循环中。

    (从我下面的注释扩展)还要确保调用 next() 否则迭代器将永远不会前进。

    不好:

    while (i.hasNext()) {
      //...
    }
    

    好:

    while (i.hasNext()) {
      Object o = i.next();
      //...
    }
    

    最好的(假设是泛型)

    for (Foo o : list) {
      //....
    }
    

    【讨论】:

    • 它是一个 LinkedList 迭代器,它是标准的。
    • 那么我建议拆分行。一次遍历每一个,看看问题是在迭代器中还是在其他地方。发生的一件事是您必须在您的 while 主体中调用 .next() 否则您的迭代器将不会向前推进,因此您将永远循环。
    【解决方案3】:

    查看“变量”视图以检查每次 F6 命中后发生的情况。

    【讨论】:

    • 我以前做过。奇怪的是有很多物体。我可以永远点击下一步,但我认为这不是重点。如果 someIterator.hasNext() 那么它将进入 while 循环。对吗?
    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多