Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 检索字符串的ArrayList对象方法的二进制搜索将无法识别字符串是否相同?_String_Collections_Arraylist_Binary Search - Fatal编程技术网

String 检索字符串的ArrayList对象方法的二进制搜索将无法识别字符串是否相同?

String 检索字符串的ArrayList对象方法的二进制搜索将无法识别字符串是否相同?,string,collections,arraylist,binary-search,String,Collections,Arraylist,Binary Search,整个程序按整数最高平均值、姓氏对Student对象的ArrayList进行排序,还可以选择执行搜索。除了我的二进制搜索,我的程序工作得完美无缺,我绝对不能确定失败的原因。我已经把所有信息打印出来了 这是一个学生类,其方法引用了学生的名字和姓氏(String) 此外,这里是二进制搜索的代码。是的,我知道Collections有一个方法可以达到这个目的,但是对于我的班级,我需要自己编写搜索 private static void searchStudent(ArrayList<Student&

整个程序按整数最高平均值、姓氏对
Student
对象的
ArrayList
进行排序,还可以选择执行搜索。除了我的二进制搜索,我的程序工作得完美无缺,我绝对不能确定失败的原因。我已经把所有信息打印出来了

这是一个学生类,其方法引用了学生的名字和姓氏(
String

此外,这里是二进制搜索的代码。是的,我知道
Collections
有一个方法可以达到这个目的,但是对于我的班级,我需要自己编写搜索

private static void searchStudent(ArrayList<Student> a){
    Scanner reader = new Scanner(System.in);
    System.out.print("Please enter search term: ");
             String term = reader.next();

    //System.out.println(term + " " + term.length());
    System.out.println("---SEARCH RESULTS:---");
    for (int i = 0; i < a.size(); i++){
        String fName = (a.get(i).getFirstName());
        String lName = (a.get(i).getLastName());
        //System.out.println(fName + " " + fName.length());
        //System.out.println(lName + " " + lName.length());
            if (term == fName){
                System.out.println(a.get(i));
            } else if (term == lName){
                System.out.println(a.get(i));
            }
    }

}
私有静态无效搜索学生(ArrayList a){
扫描仪阅读器=新扫描仪(System.in);
System.out.print(“请输入搜索词:”);
String term=reader.next();
//System.out.println(term+“”+term.length());
System.out.println(“----搜索结果:-”);
对于(int i=0;i
在Java中,需要使用
.equals()
来比较字符串。例如,与此相反:

if (term == fName){
您需要这样做:

if (term.equals(fName)){
否则,您只能比较引用

顺便说一句,这不是二进制搜索,而是线性搜索。您可以看到二进制搜索的一个实现,例如:


虽然要比较字符串,您需要在String类上使用/methods,而不是
运算符。

在Java中,您需要使用
.equals()
来比较字符串。例如,与此相反:

if (term == fName){
您需要这样做:

if (term.equals(fName)){
否则,您只能比较引用

顺便说一句,这不是二进制搜索,而是线性搜索。您可以看到二进制搜索的一个实现,例如:

虽然要比较字符串,您可以在字符串类上使用/methods,而不是
运算符