基本问题,但我似乎无法绕过它:
我有旋转的东西,我想在一定范围内停止它。
所以如果旋转(在double中)在一定范围内,我希望它返回false。
实施例
旋转= 182,StopAt 180,准确度2.所以应该停止。
旋转= 182,StopAt 180,准确度1.所以不应该停止。
目前我有:
/**
*
* @return
* number = 100, current = 105, accuracy = 10
* Example
* 105c / 100n = 1.05..
* 10c / 100n = 0.1..
*/
public boolean stopAtRange(double number, double current, double accuracy)
{
if(current / number) + accuracy)
{
return true;
}
return false;
}
答案 0 :(得分:4)
在Java if
中只接受布尔值,并且整数值不会转换为布尔值。
为了达到你想要的效果,你的方法应该是这样的
public boolean stopAtRange(double number, double current, double accuracy)
{
if( Math.abs(current - number) <= accuracy)
{
return true;
}
return false;
}
如果current
大于或小于number
,则此工作。如果您只想在current
更大或至少等于number
时停止,则应移除Math.abs
我还建议使用此版本:
public static boolean stopAtRange(double number, double current, double accuracy) {
return Math.abs(current - number) <= accuracy;
}
因为它的性能更加紧凑,并且已经过优化。
答案 1 :(得分:1)
如果current
距离accuracy
+/- number
,则会停止播放:
public boolean stopAtRange(double number, double current, double accuracy)
{
if( Math.abs(current - number) <= accuracy)
{
return true;
}
return false;
}
答案 2 :(得分:1)
您的问题有点令人困惑,但我会尽力帮助您。 :)
此代码无法编译:
if(current / number) + accuracy)
首先,您打开了一个支架,然后关闭了两个支架。你会想要:
if((current / number) + accuracy)
其次,这不会评估为布尔值(true或false),这是if语句工作所必需的。你想要:
public boolean stopAtRange(double number, double current, double accuracy)
{
if(Math.abs(current - number) <= accuracy) return true;
return false;
}
这可以解决您的数字(100和105)之间的差异,并确认它们是否在范围内(10)。
希望这有帮助!
答案 3 :(得分:0)
如果接受布尔值,而不是double。类似的东西:
public boolean stopAtRange(double number, double current, double accuracy)
{
if(Math.abs(current-number) <= accuracy)
{
return true;
}
return false;
}