【发布时间】:2013-11-28 15:50:51
【问题描述】:
我正在尝试实现一些非常简单的东西(原则上),但我在实现方面遇到了一些麻烦。
在我的程序中,用户必须在 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;
}
【问题讨论】:
-
所以把代码放在这里。 ;)
-
@user2172816 是的,我确保了这一点,如果您取消选中方向 1,它将禁用所有其他方向,直到您再次选中 1 :)
-
这段代码可不简单,有没有想过为此写测试代码?
-
@MariuszS 英语不是我的母语 :S 你说的不是微不足道是什么意思?要我提供一个可以运行的 sn-p 吗?
-
@MariuszS 我正在努力
标签: java boolean logic boolean-logic boolean-operations