2015-04-06 57 views
0

我有一对像下面Java循环,的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

您是否尝试过使用调试器来逐步调试? – 2015-04-06 01:17:02

+0

我正在学习使用Scite文本编辑器我不认为它有一个调试器。 – Prolog 2015-04-06 01:19:59

+0

*但现在它不像预期的那样行事*那么它应该做什么? – Atsby 2015-04-06 01:20:56

回答

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; 
} 
+0

如果compareCells'返回false,那么这是一个无限循环*不是一个好主意 – 2015-04-06 03:45:21

+0

已编辑来解决@ErwinBolwidt提出的问题。 – 2015-04-06 19:25:55