這是我的 java 代碼,問題是在 binarySearch() 中使用關系運算符 (<) 會出錯。我猜我得到這個錯誤是因為操作數是對象類型。如何消除此錯誤以便我的函數完美運行?import java.util.Random;import java.util.Arrays;class BinarySearch{ public static void main(String $[]) { Integer arr[]=new Integer[20]; for(int i=0;i<20;i++) arr[i]=(new Random()).nextInt()%10000; display("Initial array :\n"); array(arr); Arrays.sort(arr); display("After sorting :\n"); array(arr); display("Enter the element to be searched for : "); Integer elem=(new java.util.Scanner(System.in)).nextInt(); display(elem+(binarySearch(arr,elem)?" Found":" Not found")+"\n"); } public static <T>boolean binarySearch(T arr[],T val) { int start=0; int end=arr.length-1; while(start<=end) { int mid=(start+end)/2; if(arr[mid]==val) return true; if(arr[mid]<val) start=mid+1; else end=mid-1; } return false; } public static void display(Object o) { System.out.print(o); } public static <T>void array(T arr[]) { for(int i=0;i<arr.length;i++) display(arr[i]+" "); display("\n"); }
2 回答

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
問題是您的 binarySearch() 方法接受的參數將是對象而不是原始類型,因此使用相等運算符 == 比較它們是不明智的,使用小于運算符 < 比較它們也是無效的。而是按如下方式定義您的 binarySearch 方法:
public static <T extends Comparable<T>> boolean binarySearch(T arr[],T val) {
int start = 0;
int end = arr.length-1;
while(start <= end) {
int mid=(start+end)/2;
int comparison = arr[mid].compareTo(val);
if(comparison == 0) {
return true;
}
if(comparison < 0) {
start = mid+1;
}
else {
end = mid-1;
}
}
return false;
}
添加回答
舉報
0/150
提交
取消