中断从循环调用的方法

时间:2012-12-19 09:01:01

标签: java methods while-loop break

我正在重构一个非常大的方法,里面有很多重复。

在该方法中有许多while循环,包括:

    if ( count > maxResults){
        // Send error response
        sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your search"), out, session);
        break;

我想把它作为一种方法提取出来,因为它在当前这个方法中发生了3次,但是当我这样做时,我在中断时得到一个错误,因为它不再在循环中。问题是仍然需要打破while循环,但仅在达到最大结果数时。

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

这是不可能直接做的。

大多数情况下,你想要破解,因为你找到了解决方案而不再需要搜索。因此,在被调用函数中指示存在/是否成功,例如通过返回结果或布尔值来指示成功。如果函数返回成功,则中断。

答案 1 :(得分:3)

假设方法是:

public boolean test(int count, int maXResult) {
 if ( count > maxResults) {
        // Send error response
        sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your search"), out, session);
        return true;
        }
return false;
}

从循环调用方法:

while(testCondition) {
    if (test(count, maxResults)) {
    break;
   }
}

答案 2 :(得分:1)

如果它现在位于方法而不是while循环中,则返回一个值,然后根据该值进行中断。

public bool refactoredMethod(parameters)
{
    if ( count > maxResults){
    // Send error response
    sendResponse(XMLHelper.buildErrorXMLString("Too many results found, Please refine your     search"), out, session);

    return true;
    }

    return false;
}

答案 3 :(得分:0)

尝试使用return;

打破方法中的循环

答案 4 :(得分:0)

正如Thriler所说,你无法直接做到这一点。您可以将其中的一部分提取到方法中并执行以下操作:

if(isTooManyResults(count)) { break; }

显然,如果结果太多,则isTooManyResults方法需要返回true,否则false