搜索方法会创建二元运算符错误

时间:2018-03-07 05:42:16

标签: java search binary compareto linear-search

我目前正在编写一种方法,它比简单的线性搜索更有效地搜索已排序的数组。想法是用户将输入"目标"它们定位的值,数组将根据值向上或向下移动数组,直到中点(中)找到它。但是,当我尝试将中间值与目标进行比较时,如果" target"小于或大于" mid",我一直收到一个糟糕的操作数错误,因为我正在将目标与int进行比较,当我真的想要收集是否值" mid"与目标相比,大于0或小于0.所以" mid"可以决定是否向上或向下移动阵列。关于如何为方法解决这个问题的任何想法? (对不起,如果我让这个混乱,这已经是一个漫长的夜晚)

 for (int x=0; x<array.length; x++)
 {
    int min = 0, mid, max=array.length-1;

    do
    {
    mid = (min + max) / 2;
       if(array[mid].compareTo(target < 0))
       {
          max = mid - 1;   //moves down the array
       }
       else if(array[mid].compareTo(target > 0))
       {
          min = mid + 1;   //moves up the array 
       }
       else
       {
          return mid;
       }
   }
   while(min<=max);
   {
      return -1; //after dropping out of the while loop
   }
}

}

错误:SearchUtils.java:28:错误:二元运算符的错误操作数类型&#39;&lt;&#39;     if(array [mid] .compareTo((target)&lt; 0))                                             ^   第一种类型:可比较   第二种类型:int SearchUtils.java:32:错误:二元运算符的错误操作数类型&#39;&gt;&#39;    else if(array [mid] .compareTo(target&gt; 0))                                                ^   第一种类型:可比较   第二种类型:int 2个错误

1 个答案:

答案 0 :(得分:0)

将谓词从函数调用中取出:

if(array[mid].compareTo(target) < 0)