0
在我的程序中,我將20個名稱從一個文件存儲到一個數組中。用戶然後可以輸入一個名稱,並使用二進制搜索來查找該位置。我的程序似乎無法將目標與陣列中點匹配。我試過修剪任何空白區域,但仍然沒有運氣。 搜索算法看起來好嗎?在二進制搜索字符串數組時遇到問題
while(true){
System.out.println("Enter the name you are searching for.");
String target = sc.nextLine();
if(target.equals("done"))
break;
int mid;
int left = 0;
int right = names.length-1;
while(left <= right){
mid = (left + right)/2;
if(target.equals(names[mid].trim())){
System.out.println("Found in position: " + mid); //when found
break;
}
else if(target.compareTo(names[mid]) < 0){ //set right parameter
right = mid-1;
}
else if(target.compareTo(names[mid]) > 0){ //set left parameter
left = mid+1;
}
}
}
也許這是一個愚蠢的問題,但'名稱'按升序排序吧?算法看起來不錯。 – alfasin
Try:'String target = sc.nextLine()。trim();' – alfasin