2015-04-06 31 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