Java 模运算不会产生负数

Java 模运算不会产生负数,java,modulo,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

我有一个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);
    }
private static void highlightIslandBorders(位置loc){
世界世界=loc.getWorld();
int sx=loc.getBlockX();
sx-=sx%岛大小;
int sz=loc.getBlockZ();
sz-=sz%岛屿大小;
if((sx<0)|(sz<0)){
返回;
}
int ex=sx+islandSize-1;
int ez=sz+islandSize-1;
int y=loc.getBlockY()-1;
Material cornerMat=Material.GLOWSTONE;
getBlockAt(sx,y,sz).setType(cornerMat);
getBlockAt(ex,y,sz).setType(cornerMat);
getBlockAt(sx,y,ez).setType(cornerMat);
getBlockAt(ex,y,ez).setType(cornerMat);
}

您从哪里获得0

int islandSize = 3;
int sx = -100;

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

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

模块:-1
sx:-99


它是一个minecraft mod/插件吗?你想用它做什么?它是我服务器的控制台在这个例子中islandSize是什么?另外,您是否打印了两次sz的值,或是错误地写了两次“sz:”?islandSize=31
int islandSize=31;int-sx=46;System.out.println(“Mod:”+(sx%islandSize));sx-=sx%岛大小;System.out.println(“sx:+sx”)Mod:15 sx:31它对我很有效,所以您的代码中可能有一些您没有向我们展示的内容。