我是Java新手,但我似乎不明白为什么这段代码总是打印66!代码
for (int x = 0; x < columns; ++x) {
for (int y = 0; y < rows; ++y) {
Cell cell = getCell(x, y);
int gridX = (int)cell.getXFromGridX();
int gridY = (int)cell.getYFromGridY();
if (((int)cell.getX()) == gridX && ((int)cell.getGridY()) == gridY) {
continue;
}
++count;
log("CELL ANIMATING", (int)cell.getX() + " " + gridX + " ::: " + (int)cell.getY() + " " + gridY);
基本上,for循环迭代66个项目,如果它们的gridX==X和gridY==Y,则计数不应上升,也不应向控制台输出任何内容。
然而,我得到的输出,(只是一个选择)
单元动画﹕300 300::480 400
单元动画﹕300 300::1000 480
单元动画﹕360 360::80 80
单元动画﹕360 360::160 160
单元动画﹕360 360::240 240
输出清楚地表明,在某些情况下,网格X==X和网格Y==Y。
为什么会这样?我该如何修复?
谢谢。
编辑
上面使用的单元格方法都返回浮点值。
在if
条件下检查:
cell.getGridY()
在日志打印中,您正在检查:
(int)cell.getY()
并且这些调用可能返回不同的值。
在if语句中将cell.getGridY()更改为cell.getY()
if (((int)cell.getX()) == gridX && ((int)cell.getGridY()) == gridY) {