我正在尝试实现一些非常简单的东西(原则上),但我在实现时遇到了一些麻烦。
在我的程序中,用户必须在 1 至 4 个方向之间进行选择,这些方向应被排除。 对于每个方向,用户都可以选择要排除的值的数字范围(从 0 到 360)。 但不知怎的,我不知道如何以简单的方式做到这一点。
我的面板看起来像这样:A)
这是我想要实现的目标的一个简短示例。
我想要同样的结果:B)
至于这个(但它当然应该适用于所有 4 种情况):C)
您知道如何解决这个问题吗?或者一些提示? 任何帮助将不胜感激。 (如果您希望我提供我尝试过的代码,我会的)。
编辑:好的,你想要一些代码,这就是我所做的(但它没有按我想要的方式工作)。
content[i].getNwdMean() 是我想要与旋转器中的值进行比较的值,以查看我的点是否在禁区中。
buttons.chkExcludedA1、buttons.chkExcludedA2、buttons.chkExcludedA3 和buttons.chkExcludedA4 是要排除的方向的按钮。
buttons.getDir1A()、getDir2A、getDir3A、getDir4A、getDir1B、getDir2B、getDir3B、getDir4B 是存储在微调器中的值,在我的示例中为 C)、getDir1A = 180、getDir1B = 190; getDir2A = 190 和 getDir2B = 200。
// Is supposed to check the interval in both sides.
public static boolean isBetween(double x, double a, double c)
{
return(x > (a < c ? a : c) && x < (a > c ? a : c));
}
private boolean parsDirections(boolean state)
{
boolean a1 = false, a2 = false, a3 = false, a4 = false;
if (buttons.chkExcludedA1 == true || buttons.chkExcludedA2 == true || buttons.chkExcludedA3 == true || buttons.chkExcludedA4 == true)
{
if (isBetween(content[i].getNwdMean(), buttons.getDir1A(), buttons.getDir1B()) == false)
{
a1 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir2A(), buttons.getDir2B()) == false)
{
a2 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir3A(), buttons.getDir3B())== false)
{
a3 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir4A(), buttons.getDir4B()) == false)
{
a4 = true;
}
}
// Basic test to see if it prints what i want, but it doesn't.
if (a4 == true && a2 == true)
{
print(state);
}
else if (a1 == true && a2 == false)
{
print(state);
}
else
{
return state;
}
return state;
}
最佳答案
您应该检查每个 if 语句中的各个 chkExcludedAX
(以及您的逻辑的其他问题)。
尝试这样的事情:
boolean excluded1 = buttons.chkExcludedA1 &&
isBetween(content[i].getNwdMean(), buttons.getDir1A(), buttons.getDir1B()));
boolean excluded2 = buttons.chkExcludedA2 &&
isBetween(content[i].getNwdMean(), buttons.getDir2A(), buttons.getDir2B()));
boolean excluded3 = buttons.chkExcludedA3 &&
isBetween(content[i].getNwdMean(), buttons.getDir3A(), buttons.getDir3B()));
boolean excluded4 = buttons.chkExcludedA4 &&
isBetween(content[i].getNwdMean(), buttons.getDir4A(), buttons.getDir4B()));
boolean excluded = (excluded1 || excluded2 || excluded3 || excluded4);
(优先考虑可读性而不是微优化)
或者您可以将它们全部合并到一个语句中:
boolean excluded =
(buttons.chkExcludedA1 &&
isBetween(content[i].getNwdMean(), buttons.getDir1A(), buttons.getDir1B())) ||
(buttons.chkExcludedA2 &&
isBetween(content[i].getNwdMean(), buttons.getDir2A(), buttons.getDir2B())) ||
(buttons.chkExcludedA3 &&
isBetween(content[i].getNwdMean(), buttons.getDir3A(), buttons.getDir3B())) ||
(buttons.chkExcludedA4 &&
isBetween(content[i].getNwdMean(), buttons.getDir4A(), buttons.getDir4B()));
关于java - 选择的 boolean 值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997930/