在数组列表中搜索字符串(Java)
我创建了一个在数组列表中搜索字符串的方法,但是我发现问题是,如果我搜索一本书,它必须是它输入数组列表的确切方式 e、 g如果我输入“哈利·波特”作为书名并搜索它,我必须输入“哈利·波特”,我不能输入“哈利·波特”或“哈利·波特”,因为它不会识别它,我知道有一种叫做“忽略案例”的东西,但无法使其发挥作用,或者可能放错了位置 我的代码:在数组列表中搜索字符串(Java),java,string,arraylist,Java,String,Arraylist,我创建了一个在数组列表中搜索字符串的方法,但是我发现问题是,如果我搜索一本书,它必须是它输入数组列表的确切方式 e、 g如果我输入“哈利·波特”作为书名并搜索它,我必须输入“哈利·波特”,我不能输入“哈利·波特”或“哈利·波特”,因为它不会识别它,我知道有一种叫做“忽略案例”的东西,但无法使其发挥作用,或者可能放错了位置 我的代码: public void searchBook() { System.out.println("\n"+"Enter the title of the bo
public void searchBook() {
System.out.println("\n"+"Enter the title of the book you would like to search for: ");
String search = input.nextLine();
for (int i = 0; i < newBook.size(); i++) {
// IF statement to check that any book in the array list equals what
// the user has typed in
if ( newBook.get(i).getTitle().equals(search) ) {
System.out.println(("Book ID: " + newBook.get(i).getBookID() + " Title: " + newBook.get(i).getTitle()
+ " Author: " + newBook.get(i).getAuthor() + " Genre: " + newBook.get(i).getGenre()
+ " Date registered: " + newBook.get(i).getDateReg() + " Loan Status: "
+ newBook.get(i).getLoan() + " Number of times loaned: " + newBook.get(i).getNumOfLoans()));
} else {
System.out.println("No match was found");
}
} // end of for
}// end of method
public void searchBook(){
System.out.println(“\n”+”输入要搜索的书籍的标题:”;
字符串搜索=input.nextLine();
对于(int i=0;i
更改
if (newBook.get(i).getTitle().equals(search)
到
equalsIgnoreCase
执行忽略大小写的字符串比较。更改
if (newBook.get(i).getTitle().equals(search)
到
equalsIgnoreCase
执行忽略大小写的字符串比较。使用equalsIgnoreCase()
而不是equals()
阅读文档
来自javadoc
将此字符串与另一个字符串进行比较,忽略大小写注意事项。
如果两个字符串的大小写相同,则视为相等
两个字符串中的长度和对应字符相等
忽略案例
使用equalsIgnoreCase()
代替equals()
阅读文档
来自javadoc
将此字符串与另一个字符串进行比较,忽略大小写注意事项。
如果两个字符串的大小写相同,则视为相等
两个字符串中的长度和对应字符相等
忽略案例
对于搜索
包含的内容
方法更为正确
if (newBook.get(i).getTitle().toLowerCase().contains(search.toLowerCase()))
对于搜索
包含的内容
方法更为正确
if (newBook.get(i).getTitle().toLowerCase().contains(search.toLowerCase()))
请尝试(newBook.get(i).getTitle().toLowerCase().contains(search.toLowerCase()))。这种方法比多次调用
newBook.get(i)
更为正确,只需调用一次并将其存储在局部变量中。您应该按照Tuna所说的使用contains方法和小写转换。请尝试if(newBook.get(i).getTitle().toLowerCase().contains(search.toLowerCase())。这种方式比调用<代码> NeXBoo.To(i)次数要更正,请调用它并将其存储在本地变量中。您应该使用包含方法和小写转换作为Tuna所说的。解释它比DealSaleReCaseMead方法更正确,以及您如何考虑包含在均衡器上?<代码>均衡器(String)。已经在内部执行了自己的案例转换操作,并且更易于阅读。亲爱的朋友们。我们都知道equalsIgnoreCase()是什么。但他正在输入文本。文本可能是“rry”,那么他就找不到任何答案了。好吧,我支持@Tuna Karakasoglu这个案例。这种实现将覆盖更多的案例,并返回更合法的结果。我不知道为什么人们否决了这个答案。好吧,再看一次问题,但很抱歉不能再投票了。我回答这个问题。解释它比均衡器方法更正确,你认为如何包含在均衡器上?<代码>均衡器(String)已经在内部完成了自己的案例转换操作,更容易阅读。亲爱的朋友们。我们都知道equalsIgnoreCase()是什么。但他正在输入文本。文本可能是“rry”,那么他就找不到任何答案了。好吧,我支持@Tuna Karakasoglu这个案例。这种实现将覆盖更多的案例,并返回更合法的结果。我不知道为什么人们否决了这个答案。好吧,再看一次问题,但很抱歉不能再投票了。我同意这个答案。