Java int比较,无法找出问题所在



我是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) {

最新更新