Loop和break的递归

时间:2018-03-14 14:27:53

标签: java

我正在设计一个递归方法,它有一个for循环和break内部,并期望在满足某些条件后打破循环。 以下是一段代码

public static UIComponent findElem(UIComponent component){
UIComponent comp = null;
for(UIComponent child : component.getChildren()){
    if(child instanceof RichSelectBooleanRadio){
        RichSelectBooleanRadio radioButton = (RichSelectBooleanRadio)child;
        System.err.println("radioButton:: + " + radioButton);
        Object val = radioButton.getValue();
        if(val == null){
            val = radioButton.getSubmittedValue();
        }

        System.err.println("val ::" +  val);
        if( val != null && Boolean.parseBoolean(val.toString())){
            comp = child;
        }
        break;
    }
    findElem(child);
}

在此代码循环中,中断后不会终止。 有人可以帮我确定这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

public static UIComponent findElem(final UIComponent component)
{
    for (final UIComponent child : component.getChildren())
    {
        if (child instanceof RichSelectBooleanRadio)
        {
            final RichSelectBooleanRadio radioButton = (RichSelectBooleanRadio) child;
            System.err.println("radioButton :: + " + radioButton);
            Object val = radioButton.getValue();
            if (null == val)
                val = radioButton.getSubmittedValue();
            System.err.println("val :: " +  val);
            if (null != val && Boolean.parseBoolean(val.toString()))
                return child;
        }
        else
        {
            // Use the result of the recoursive call: if not NULL, return it
            final UIComponent comp = findElem(child);
            if (null != comp)
                return comp;
        }
    }
    // Return NULL if the loop ended without early return
    return null;
}