【问题标题】:Java: Searching an array by a variable in an instance of object [duplicate]Java:通过对象实例中的变量搜索数组[重复]
【发布时间】:2016-04-09 21:08:58
【问题描述】:

总体目标是创建一个图书馆模拟,允许搜索书籍以及交易,例如借书。我只包括了我认为相关的部分。

我在Biblio 类中有数组stock,如下所示:

public class Biblio{
    private ArrayList<Book> stock;

以及带有构造函数的Book 类:

    public Book(String author , String title)
    {
        this.author = author;
        this.title = title ;
        code = null;//this is a String

    }

在我尝试使用code(即String)搜索Book 对象的主要方法中,我在Biblio 类中使用findCode 方法:

    public Book findCode(String searchedCode){
        Book foundBook = null;
        for(Book bookObj : stock){

            if(bookObj.getCode().equxals(searchedCode)){
                 bookObj= foundBook;}//
        return foundBook;
    }

这是我目前拥有的主要方法中的代码:

 Biblio libSim;
 libSim = generateLib();                            
                                   ...
System.out.println(libSim.findCode(scan.next()));

但输出为空,我认为这是因为foundBook 等于空。但是我无法返回bookObj

我不知道如何通过搜索code 变量在数组中找到对象。这些书以另一种方法添加到图书馆,并使用 setter 方法将任何等于nullcode 设置为格式为LIB0001 的字符串,这是在我调用findCode 方法之前完成的。

如何通过在数组中搜索特定实例变量来找到对象?

【问题讨论】:

  • 问题不是如何比较字符串,而是如何通过比较对象的实例变量在数组中找到对象?当我使用 .equals() 时,我仍然无法正常工作。
  • 我有一个使用 lambdas 的答案;我很想发布它。太糟糕了。
  • 这不是我可以使用的答案。
  • 是的。也许不是今天,但是....这是 JDK 8。你应该尝试一下。

标签: java arrays search


【解决方案1】:

你不能用 == 比较字符串

请参阅此处了解如何正确操作:How do I compare strings in Java?

【讨论】:

  • 不知道这是不可能的。但是我最初确实有 .equals(),但它的警告“对象等于 null 永远不会为真”,
  • 你必须使用 equals 因为 String 是一个对象。它不同于 int 或 double。
  • 我最初有 .equals() 但这对我也没有用,问题不是我如何比较字符串,而是如何通过比较的实例变量在数组中找到一个对象对象?
  • 如果您使用 equals(),您的算法应该可以工作。您的算法是一个简单的 for 循环。如果你使用 equals() 它应该工作得很好。
  • 它没有。我收到空指针错误,不知道为什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2013-09-08
  • 1970-01-01
  • 2012-02-12
相关资源
最近更新 更多