模数运算不会产生负数

时间:2018-05-28 11:06:39

标签: java modulo

我在java中有一个小方法来计算坐标。但如果其中一个坐标是负数,我只得到0而不是负数。

private static void highlightIslandBorders(Location loc) {
        World world = loc.getWorld();

        int sx = loc.getBlockX();
        sx -= sx % islandSize;

        int sz = loc.getBlockZ();
        sz -= sz % islandSize;

        if ((sx < 0) || (sz < 0)) {
            return;
        }

        int ex = sx + islandSize - 1;
        int ez = sz + islandSize - 1;

        int y = loc.getBlockY() - 1;

        Material cornerMat = Material.GLOWSTONE;
        world.getBlockAt(sx, y, sz).setType(cornerMat);
        world.getBlockAt(ex, y, sz).setType(cornerMat);
        world.getBlockAt(sx, y, ez).setType(cornerMat);
        world.getBlockAt(ex, y, ez).setType(cornerMat);
    }

1 个答案:

答案 0 :(得分:0)

你到底在哪里得到0?

int islandSize = 3;
int sx = -100;

System.out.println("Mod: " + (sx % islandSize));

sx -= sx % islandSize;
System.out.println("sx: " + sx);

结果

  

Mod:-1
  sx:-99