java - 如何退出while循环,里面有递归方法?

标签 java recursion while-loop iteration

这是我无法解决的问题。我有一个 .xml 文件,不是与 parent 和 child 有关,而是与孙子和多孙子有关。每个元素名称都是唯一的,因此我需要一种方法来查找并返回可搜索元素。到目前为止我的代码:

    public static Element findElement(Element current, String nameOfElement) {
            Element searchedElement = null; // this element I want to return
            List children = current.getChildren(); // current is a root element passed to method
            Iterator iterator = children.iterator();
            //label:
            while (iterator.hasNext()) {
                Element child = (Element)iterator.next();   
                if (child.getName().equals(nameOfElement)) {
                    searchedElement = child; // on some level it founds it
                    System.out.println("!!!"); // it's just a marker to see that action happens
                    //break label;
                    break;
                }
                findElement(child, nameOfElement);
            }
            return searchedElement;     
        }

正常情况下,当if条件执行时,循环应该根据break停止,但这种情况不会发生。我还有一个关于添加标签的想法。 (它在代码中被注释)但它也不起作用。递归开始并删除变量 searchedElement 值。 我找到了一个解决方案,但它看起来很丑,我想知道上面添加的代码不起作用。我的解决方案是添加以下代码而不是递归调用 findElement(child, nameOfElement);:

Element el = findElement(child, nameOfElement);
            if (el != null && el.getName().toLowerCase().equals((nameOfElement).toLowerCase())) {
                searchedElement = el;
                return searchedElement;
            }

请帮忙寻找解决方案!

最佳答案

尝试,

 public static Element findElement(Element current, String nameOfElement) {
        Element searchedElement = null; // this element I want to return
        List children = current.getChildren(); // current is a root element passed to method
        Iterator iterator = children.iterator();
        //label:
        while (iterator.hasNext()) {
            Element child = (Element)iterator.next();   
            if (child.getName().equals(nameOfElement)) {
                searchedElement = child; // on some level it founds it
                System.out.println("!!!"); // it's just a marker to see that action happens
                //break label;
                break;
            }
            searchElement = findElement(child, nameOfElement);
            if(searchElement != null)
                return searchElement;

        }
        return searchedElement;     
    }

关于java - 如何退出while循环,里面有递归方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490243/

相关文章:

java - 如何在 Java 中使用 Mockito 验证字符串内容

java -> vs. >= 在冒泡排序中导致显着的性能差异

C++: 程序 "Not Responding"执行时

Java - 带 float 的无限循环

java - 如何将帖子数据连续发送到网络和移动设备

java - 使用 Spring 的 jetty-maven-plugin 中出现莫名其妙的无法解析的 IncompleteClassChangeError

java - 构建有效求和为数字的排列

c - 对整数的奇数位求和的递归函数

Python 替换部分字符串

java - 向现有的 java 程序添加循环?