【问题标题】:while loop only runs oncewhile 循环只运行一次
【发布时间】:2011-11-02 00:31:07
【问题描述】:

我正在尝试循环列表 A 并将列表 A 中的每个元素与列表 B 进行比较以寻找匹配项我无法弄清楚为什么这个 while 循环只执行一次?

for (WebElement webElement : inputs) 
{
    if (webElement.getAttribute("type").equalsIgnoreCase("text")) 
    {       
        String element = webElement.getAttribute("id").toString();
        System.out.println("Element: " + element);

        while(e.hasMoreElements())
        {   
            String param = (String) e.nextElement();
            System.out.println("Parameter: " + param);     

            System.out.println(element.matches(param));
            if(element.matches(param))
            {
                webElement.sendKeys(vars.get(param));
                //inputs.remove(element);
            }
        }
    }           
}       

抱歉这里是剩下的代码,在上面的代码之前引用了

哈希表变量 = 新哈希表(); vars.put("USERNAME","slider"); vars.put("POSTCODE","LU1 3LU"); vars.put("EMAIL","david.cunningham@lumesse.com"); vars.put("DOB","02 Mar 1983"); Enumeration<String> e = vars.keys();

【问题讨论】:

  • e到底是什么?我没有看到减速和初始化。当它只包含 1 个元素时,while 循环只执行一次
  • e 引用的是什么?它是一个迭代器吗?
  • e 是什么,它来自哪里?这段代码中没有声明。
  • e 中有什么,你在哪里初始化了e?
  • 这还不够代码...如果e 只包含一个元素,那么循环应该只执行一次!

标签: java while-loop


【解决方案1】:

根据您显示的代码,枚举e 中有一个元素。您还没有显示e 的创建位置,因此没有人能够告诉您更多其他信息。

【讨论】:

    【解决方案2】:

    我的猜测是你有类似的东西:

    Enumeration e = vector.elements();
    

    在 for 循环之外。您需要将它放在 for 循环中,在while 循环之前。否则,您将一直迭代它,但永远不会回到起点。

    (如果可能的话,我还建议您使用 Iterable/Iterator 接口和通用集合。)

    【讨论】:

    • 或使用for (String elem : collection) 语法。
    • @AlexR:假设所涉及的集合实现了Iterable&lt;String&gt;,是的。
    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多