Java for loop confusion,我缺少的东西(我是初学者)

时间:2015-04-06 01:16:17

标签: java for-loop

我在java中有一个for循环,如下所示,

for (int x = cell.getGridX() - 1; x >= 0 && compareCells(cell, getCell(x, cell.getGridY())); --x, ++matches[0]);

我需要为条件添加更多验证,因此我将其更改为

for (int x = cell.getGridX() - 1; x >= 0; --x) {

        if (compareCells(cell, getCell(x, cell.getGridY()))) {

            ++matches[0];
        }
    }

但现在它并没有像预期的那样表现,我想不出原因,谢谢。

1 个答案:

答案 0 :(得分:0)

在原始 for循环中,--x++matches[0]仅在x >= 0compareCells(cell, getCell(x, cell.getGridY()))结果为真时执行。

在新的 for循环中,每--x执行x >= 0++matches[0]仅在compareCells()函数返回true时执行。为了与原始功能相匹配,它看起来更像以下内容:

for (int x = cell.getGridX() - 1; x >= 0; ;) {
    if (compareCells(cell, getCell(x, cell.getGridY()))) {
        --x;
        ++matches[0];
        continue;
    }
    break;
}