构建我自己的顺序搜索方法,由于某种原因,我只能使int搜索工作,而不是String。正在搜索的列表是从.csv文件构建的,并且每次读取一行文件,每行包含一个对象的所有数据。从具有其名称和ID的对象列表中拉出2d阵列,并且顺序搜索仅搜索那些名称和ID。 ID的。我在调试器中运行它并且正在搜索的数组值确实显示(在名称[4] [0]中),但它不返回true,而是继续返回false。 int搜索在正确的位置返回true。这是序列搜索代码:
package Contributors;
public class SequentialSearch {
//search for name match
static boolean contains(String[][] names, String nameSearched){
for (String[] name : names) {
if (name[0].equalsIgnoreCase(nameSearched)) {
return true;
}
}
return false;
}
//search for ID match
static boolean contains(String[][] names, int idSearched){
for(int loop = 0; loop<names.length; loop++){
if(Integer.parseInt(names[loop][1]) == idSearched){
return true;
}
}
return false;
}
}
这是构建二维数组的类:
public class SearchArray {
String[][] nameSearch(List sortedList){
String[][] sortedNames = new String[sortedList.size()][2];
Contributor current;
String currentName;
String currentID;
//loop to add each name and ID field to a 2d array
for(int copy = 0; copy < sortedList.size(); copy++){
current = (Contributor) sortedList.get(copy);
currentName = current.getname();
currentID = String.valueOf(current.getid());
sortedNames[copy][0]=currentName;
sortedNames[copy][1]=currentID;
}
return sortedNames;
}
}
以下是调用搜索的主要部分:
//implement search
String searchName = "Pipps, George";
int searchID = 25;
searchList = searchGrid.nameSearch(contributorList);
if(SequentialSearch.contains(searchList, searchName)){
System.out.println(searchName + " Found.");
}
//search for contributor 25
if(SequentialSearch.contains(searchList, searchID)){
System.out.println("Contributor ID " + searchID + " found.");
}
最后一个System.out是打印(ID)但不是名称。有什么想法吗?
答案 0 :(得分:1)
由于你可以在调试器中运行它,我想你也可以在if (name[0].equalsIgnoreCase(nameSearched))
上暂停程序控制,直到你期望它结果为真的迭代。在那里,您可以查看name [0]和nameSearched是否确实具有您期望的值。