Java int比较,无法弄清楚出了什么问题

时间:2015-03-04 21:20:29

标签: 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那么计数不应该上升,并且不应该输出任何内容。

但是我得到了输出,(只是一个选择)

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.

为什么会这样,我该如何解决?

感谢。

修改

上面使用的单元格方法都返回浮点数。

2 个答案:

答案 0 :(得分:2)

if条件下,您需要检查:

cell.getGridY()

在日志打印中,您要检查:

(int)cell.getY()

并且这些调用可能返回不同的值。

答案 1 :(得分:1)

在if语句中将cell.getGridY()更改为cell.getY()

        if (((int)cell.getX()) == gridX && ((int)cell.getGridY()) == gridY) {