Java 基于容差的二进制搜索

Java 基于容差的二进制搜索,java,Java,我正在尝试用容差值0.1进行二进制搜索,但我一直得到这个编译错误,因为没有这样的方法Math.abs(boolean)。当我在谷歌上搜索时,stack建议使用两个Math.abs,但这也不起作用。请帮我解决这个问题。我在这一点上被困了很长时间 final double TOLERANCE = 0.1; else if(time==r[mid])

我正在尝试用容差值0.1进行二进制搜索,但我一直得到这个编译错误,因为没有这样的方法Math.abs(boolean)。当我在谷歌上搜索时,stack建议使用两个Math.abs,但这也不起作用。请帮我解决这个问题。我在这一点上被困了很长时间

                   final double TOLERANCE = 0.1;                        
                   else if(time==r[mid])
                 {
                     System.out.println("found"+mid);
                     return Math.abs(r[mid])-Math.abs(r[mid-1])<TOLERANCE);

                 }
最终双公差=0.1;
如果(时间==r[mid])
{
系统输出打印项次(“找到”+mid);

返回Math.abs(r[mid])-Math.abs(r[mid-1])问题是这部分
Math.abs(r[mid-1]没有编译错误的部分将读取

return (Math.abs(r[mid]) - Math.abs(r[mid-1])) < TOLERANCE;
return(Math.abs(r[mid])-Math.abs(r[mid-1])<公差;
我添加的括号可能没有必要,但它们增加了清晰度

我认为这个计算仍然是错误的。这是一个更清晰、更好的方法

double difference = r[mid] - r[mid-1];
return Math.abs(difference) < TOLERANCE;
双差=r[mid]-r[mid-1];
返回数学值abs(差)<公差;
abs是差分的,所以它是减法的正结果还是负结果并不重要


也就是说,如果您订购了物品,Math.abs是否是必需的?

因此括号应该在
r[mid-1]的结果之前。我正在尝试搜索9.4,如果它找到类似9.3的内容,它应该返回在该索引处找到的值。或者括号是typo@ananymous59:更正错误后,您是否仍会收到错误?