Java Sequential Search在匹配时不返回true

时间:2015-08-09 19:12:46

标签: java arrays search sequential

构建我自己的顺序搜索方法,由于某种原因,我只能使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)但不是名称。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于你可以在调试器中运行它,我想你也可以在if (name[0].equalsIgnoreCase(nameSearched))上暂停程序控制,直到你期望它结果为真的迭代。在那里,您可以查看name [0]和nameSearched是否确实具有您期望的值。