You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配文本文件生成的Book数组的title/ISBN,解决数组调用get方法报错

错误原因

你代码里的参数b是Book类型的数组,而非单个Book实例,数组本身没有getTitle()、getISBN()这类自定义成员方法,必须先通过下标[i]访问到数组中对应位置的单个Book对象后,才能调用对应getter方法,这是触发报错的直接原因。

其他代码问题

  • 你的用户输入存储在input变量中,但判断匹配时使用了未定义的title、isbn变量,逻辑不成立
  • while循环中没有对计数器i做自增操作,运行时会陷入死循环
  • 逻辑判断中使用了单与&,应该替换为短路与&&,避免前面条件不成立时仍执行后续判断导致空指针异常

修正后的代码片段

public static int searchByTitleOrISBN(Book[] b) {
    int i = 0;
    System.out.println("Enter the Title or ISBN of the book: ");
    String input = scan.next();
    
    while (i < b.length) {
        // 先通过b[i]获取单个Book对象再调用方法
        Book currentBook = b[i];
        if ((currentBook.getTitle().equals(input) || currentBook.getISBN().equals(input)) 
                && currentBook.getQty() > 0 
                && currentBook.isForSale()) {
            // 匹配到符合要求的书籍,返回对应数组下标
            return i;
        }
        i++; // 计数器自增
    }
    // 未匹配到符合要求的书籍返回-1
    return -1;
}

可选优化

如果书籍的title或ISBN可能为null,建议用java.util.Objects.equals()方法比对,避免空指针异常,匹配判断可修改为:
(Objects.equals(currentBook.getTitle(), input) || Objects.equals(currentBook.getISBN(), input))

内容的提问来源于stack exchange,提问作者User238742837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:04