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)){
否则,您只能比较引用
顺便说一句,这不是二进制搜索,而是线性搜索。您可以看到二进制搜索的一个实现,例如:
运算符