gpt4 book ai didi

java - 使用充当对象 ID 的字符串在数组列表中搜索对象?空指针问题

转载 作者:行者123 更新时间:2023-12-01 10:05:11 25 4
gpt4 key购买 nike

当在书店搜索一本书时,假设对象是一本书,每个书对象都会有标题、作者、ISBN 代码等。

假设我使用“scan.next()”以字符串形式输入 ISBN

我接受此输入并使用它来查找数组列表中的对象,如下所示:

public Book searchISBN (String givenISBN){
Book foundBook = null;
for(Book findISBN : bookStore){
if(findISBN.getISBN().equals(givenISBN)){//edit changed this to inc. !=null as suggested
foundBook = findISBN;}
}
return foundBook;

我不明白这是为什么。当我包含以下代码时,其目的是将任何具有空分类的书籍设置为等于指定分类:

            if(selectedBook.getISBN().equals(null)){...

如果我运行上面的代码行,我会得到一个空指针异常。在创建书籍对象的类中,此行有一个警告,指出“对象等于 null 永远不会为真”String ISBN = null,因为目的是在不同的类中为此设置一个值,该类为书店创建对象,其中我 Collection 的一半书籍都设置了 ISBN。如果另一半等于 null(在 main 方法中

不知道该怎么办。

由于问题可能出在 get 方法上,所以就是这样:

//the Book constructor has ISBN = null
public String getISBN(String givenClass){
return ISBN
}

最佳答案

如果您在这一行收到 NullPointerException ,可能是因为引用为 null,并且您无法在 null 引用上调用方法。

if(selectedBook.getISBN().equals(null)){....

警告是由于您使用 equals() 方法来检查 null 的事实。你应该使用==

if(selectedBook.getISBN() == null)){....

现在如果没有相关代码,就不清楚程序背后的逻辑。我将尝试描述 2 种可能的场景。

  1. 假设 selectedBook 引用可以为空,则无需检查 ISBN 是否为空。您只需检查引用即可。

    if(selectedBook == null){....// your logic here
  2. 万一新创建的书籍可以有 ISBN = null(从您的描述来看),并且您正在另一个类中分配 ISBN 的值(如果我理解您的意思),您为什么不简单地设置ISBN 为默认值?

    String ISBN = "undefined"

    然后执行检查

    if(selectedBook.getISBN().equals("undefined"){....// your logic here

最后让我指出,在这段代码中

//the Book constructor has ISBN = null
public Book getISBN(String givenClass){
return ISBN
}

ISBN 似乎是 Book 类型,而不是您在文章开头提到的 String 类型,但正如您所说,如果没有看到程序的其余部分,就不清楚到底发生了什么。

希望这是清楚的。

关于java - 使用充当对象 ID 的字符串在数组列表中搜索对象?空指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com