天天看点

两层循环的中断,注意中断退出

昨天改了点代码,后来简单测试时发现出错了。于是定位到代码。

原来代码:

while (pos > areaStart && ch != '\n' && ch != '\t')
{
    pos--;
}      

因为后面的字符判断太多,所以改成了新代码:

while (pos > areaStart)
{
    for (char item : SUPPER_FRACTION_CHARS)
    {
        if (ch == item)
        {
            break;
        }
    }
    pos--;
}      

反复检查也没发现问题。DEBUG了一下才发现问题出在中断循环上。吾只管中断出for,没有想到外层还有一个while。于是改成:

boolean breakFlag = false;
while (pos > areaStart)
{
    ch = doc.getChar(pos);
    for (char item : SUPPER_FRACTION_CHARS)
    {
        if (ch == item)
        {
            breakFlag = true;
            break;
        }
    }
    if (breakFlag)
    {
        break;
    }
    pos--;
}