在数组列表中搜索字符串(Java)

在数组列表中搜索字符串(Java),java,string,arraylist,Java,String,Arraylist,我创建了一个在数组列表中搜索字符串的方法,但是我发现问题是,如果我搜索一本书,它必须是它输入数组列表的确切方式 e、 g如果我输入“哈利·波特”作为书名并搜索它,我必须输入“哈利·波特”,我不能输入“哈利·波特”或“哈利·波特”,因为它不会识别它,我知道有一种叫做“忽略案例”的东西,但无法使其发挥作用,或者可能放错了位置 我的代码: public void searchBook() { System.out.println("\n"+"Enter the title of the bo

我创建了一个在数组列表中搜索字符串的方法,但是我发现问题是,如果我搜索一本书,它必须是它输入数组列表的确切方式

e、 g如果我输入“哈利·波特”作为书名并搜索它,我必须输入“哈利·波特”,我不能输入“哈利·波特”或“哈利·波特”,因为它不会识别它,我知道有一种叫做“忽略案例”的东西,但无法使其发挥作用,或者可能放错了位置

我的代码:

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这个案例。这种实现将覆盖更多的案例,并返回更合法的结果。我不知道为什么人们否决了这个答案。好吧,再看一次问题,但很抱歉不能再投票了。我同意这个答案。