BinleSearch by Tolerance

时间:2015-05-03 00:24:54

标签: java

我正在尝试使用公差值为0.1的二进制搜索但是我一直得到这个编译错误,没有这样的方法Math.abs(boolean)。当我用Google搜索它时,堆栈建议使用两个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);

                 }

2 个答案:

答案 0 :(得分:1)

问题是这部分Math.abs(r[mid-1]<TOLERANCE)。您试图从布尔表达式的结果中获取绝对值。

答案 1 :(得分:1)

没有编译错误的那个会读

return (Math.abs(r[mid]) - Math.abs(r[mid-1])) < TOLERANCE;

我添加的括号可能没有必要,但它们增加了清晰度。

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

double difference = r[mid] - r[mid-1];
return Math.abs(difference) < TOLERANCE;

绝对是差异,所以无论是减法的正面还是负面结果都无关紧要。

那就是说,如果订购了你的物品,Math.abs是否必要?