【问题标题】:Searching and Printing within an arrayList在 arrayList 中搜索和打印
【发布时间】:2019-09-30 22:51:29
【问题描述】:

因此,我编写了一个方法来在 arrayList 中搜索标题中的特定单词(标题是 arrayList 类型书籍中的一个元素)。然后我需要打印包含该单词的标题。这是我的代码:

public void getBook(ArrayList<Book> books) {
    // find and create new arraylist with just books with "cat"
    for (Book b : books) {
        for (int i = 0; i < books.size(); i++) {
            if (b.getTitle().contains("cat")) {

                System.out.println(b.getTitle());
            }
        }
    }
}

所以在这一点上,什么都没有打印。这是我的循环中的错误吗?还是我搜索和打印不正确?

【问题讨论】:

    标签: java search arraylist


    【解决方案1】:

    不幸的是,字符串没有像 .equalsIgnoreCase() 这样的方法。因此,首先您需要将标题转换为小写或大写。通过这种方式,您可以找到包含某些单词的标题。

    public static void main(String[] args) {
            ArrayList<Book> books = new ArrayList();
            books.add(new Book("The mistery of cat"));
            books.add(new Book("Category"));
            books.add(new Book("Titanic"));
            books.add(new Book("Adjudicated"));
            getBook(books);
    }
    
    public static void getBook(ArrayList<Book> books) {
        for (Book b : books) {
            if (b.getTitle().toLowerCase().contains("cat")) {
                System.out.println(b.getTitle());
            }
        }
    }
    

    你会得到:

    猫的奥秘, 类别, 已裁定,

    【讨论】:

    • 字符串类有equalsIgnoreCasedocs.oracle.com/javase/8/docs/api/java/lang/…
    • 对不起,我想说“字符串没有其他类似.equalsIgnoreCase()的方法”
    • @Hasho,更新你的代码并删除这一行`字符串没有像 .equalsIgnoreCase() 这样的方法。`。
    【解决方案2】:

    如果您只是在 ArrayList 中查找单个单词,则不需要嵌套的 for 循环。在您的情况下,标题将打印多次,因为它位于嵌套循环内。

    否则我看不出这段代码有什么问题。我建议添加System.out.println(b.getTitle()); 以查看正在发布的标题。

    试试下面的代码,看看你会得到什么结果。这将查看您程序中的其他所有内容是否正确。

    public void getBook(ArrayList<Book> books) {
        for (Book b : books) {
            System.out.println(b.getTitle());
            if (b.getTitle().contains("cat")) {
                System.out.println("Found successfully");
            }
        }
    }
    

    如果未打印标题,则可能是您的 Book 课程或您设置 ArrayList 的方式存在问题。

    【讨论】:

    • 因此,当我尝试该代码时,它只会打印整个 arrayList 中的所有标题,而不是包含特定单词的标题。对我来说,这表明它实际上并没有通过查找单词,即进入“if”语句
    • 原来的列表中显示了带有“猫”的标题,但没有显示“找到成功”?
    • 显示了所有标题,无论有无猫,但成功找到从未打印。
    • 您的getTitle() 方法是什么样的?它是否返回String
    • 是的,getTitle() 返回一个字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多