我是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那么计数不应该上升,并且不应该输出任何内容。
但是我得到了输出,(只是一个选择)
CELL ANIMATING:300 300 ::: 480 400
CELL ANIMATING:300 300 ::: 1000 480
CELL ANIMATING:360 360 ::: 80 80
CELL ANIMATING:360 360 ::: 160 160
CELL ANIMATING:360 360 ::: 240 240
在某些情况下,输出清楚地显示gridX == X和gridY == Y.
为什么会这样,我该如何解决?
感谢。
修改
上面使用的单元格方法都返回浮点数。
答案 0 :(得分:2)
在if
条件下,您需要检查:
cell.getGridY()
在日志打印中,您要检查:
(int)cell.getY()
并且这些调用可能返回不同的值。
答案 1 :(得分:1)
在if语句中将cell.getGridY()更改为cell.getY()
if (((int)cell.getX()) == gridX && ((int)cell.getGridY()) == gridY) {