gpt4 book ai didi

java - 为什么这个方法不返回面积是否大于参数cubed?

转载 作者:行者123 更新时间:2023-11-29 10:13:06 26 4
gpt4 key购买 nike

我正在开发一个 Minecraft 插件来保护一个区域。我有一个区域类,它是在玩家选择 3 个方 block 后创建的,这个区域类有一个名为“tooBig”的方法,它用于检测区域是否大于“block” ^3”。问题是此方法总是返回 false

public boolean tooBig(int i) {
boolean bo1, bo2, bo3;
bo1 = Math.abs(b1.getX() - b2.getX()) > i;
bo2 = Math.abs(b1.getZ() - b2.getZ()) > i;
bo3 = Math.abs(b1.getY() - b3.getY()) > i;
return bo1 && bo2 && bo3;
}

b1b2b3Block 对象。

最佳答案

您对变量的使用不一致。

public boolean tooBig(int i) {
boolean bo1, bo2, bo3;
bo1 = Math.abs(<b>b1</b>.getX() - <b>b2</b>.getX()) > i;
bo2 = Math.abs(<b>b1</b>.getZ() - <b>b2</b>.getZ()) > i;
bo3 = Math.abs(<b>b1</b>.getY() - <b>b3</b>.getY()) > i;
return bo1 && bo2 && bo3;
}

您的算法完全不正确。 rectangular cuboid region的体积计算公式是

<b>Base</b> (<kbd><b>Length</b></kbd> * <kbd><b>Width</b></kbd>) * <kbd><b>Height</b></kbd>

长方体的长度宽度高度从最大点到轴的距离最小点而不是随机减去两个点。所以获取该区域的正确代码是:

public boolean tooBig(int i) {
int minX = Math.min(Math.min(b1.getBlockX(), b2.getBlockX()), b3.getBlockX());
int maxX = Math.max(Math.max(b1.getBlockX(), b2.getBlockX()), b3.getBlockX());
int minY = Math.min(Math.min(b1.getBlockY(), b2.getBlockY()), b3.getBlockY());
int maxY = Math.max(Math.max(b1.getBlockY(), b2.getBlockY()), b3.getBlockY());
int minZ = Math.min(Math.min(b1.getBlockZ(), b2.getBlockZ()), b3.getBlockZ());
int maxZ = Math.max(Math.max(b1.getBlockZ(), b2.getBlockZ()), b3.getBlockZ());

int area = <b>(maxX - minX)</b> * <b>(maxY - minY)</b> * <b>(maxY - minY)</b>;
}

让它工作:

return area > Math.pow(i, 3);

另见:

Block.getBlockX()

关于java - 为什么这个方法不返回面积是否大于参数cubed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com