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

基于线性搜索与插入算法的Java预约图书程序问题求助

搞定你的线性搜索+插入算法Java程序故障

看起来你在做一个图书管理相关的小Java程序:用线性搜索从图书数组里找出已预约的副本,再用插入算法把它放到新数组的起始位置,结果演示时掉链子了,问题出在你贴的这段代码的最后一行:

package javaapplicationadt2; 
public class Books { 
    public String ISBN; // class properties 
    publi...

先给你拆解问题,一步步来解决:

1. 先把Books类的语法坑填上

你贴的代码最后一行publi...明显是拼写错误(应该是public),而且类定义不完整,这会直接导致编译失败。先把类补全,还要加上你需要的“预约状态”属性——毕竟你要找的是已预约的图书:

package javaapplicationadt2; 

public class Books { 
    public String ISBN; 
    public boolean isReserved; // 标记图书是否已预约

    // 加个构造方法,方便快速创建图书对象
    public Books(String isbn, boolean reserved) {
        this.ISBN = isbn;
        this.isReserved = reserved;
    }
}

2. 线性搜索的正确实现

线性搜索的逻辑很简单:遍历数组,逐个检查图书是否已预约,找到目标就返回(如果要找所有已预约的,就改成收集到列表里):

// 从原数组中找到第一本已预约的图书
private Books findReservedBook(Books[] originalBooks) {
    for (Books book : originalBooks) {
        // 先判空,避免空指针异常
        if (book != null && book.isReserved) {
            return book;
        }
    }
    return null; // 没找到已预约的图书就返回null
}

3. 插入到新数组起始位置的正确逻辑

这里要注意:新数组要能容纳所有原数组元素,把找到的目标图书放在索引0,剩下的元素依次往后挪,还要跳过已经放到起始位置的那本(避免重复):

private Books[] insertToNewArrayStart(Books[] originalBooks, Books targetBook) {
    if (targetBook == null) {
        return originalBooks; // 没找到目标,直接返回原数组
    }

    Books[] newArray = new Books[originalBooks.length];
    // 把目标图书放到新数组的起始位置
    newArray[0] = targetBook;

    // 遍历原数组,把非目标的图书依次填入新数组的后续位置
    int currentIndex = 1;
    for (Books book : originalBooks) {
        if (book != null && !book.ISBN.equals(targetBook.ISBN)) {
            newArray[currentIndex++] = book;
        }
    }

    return newArray;
}

4. 你可能踩的其他坑

  • 空指针异常:遍历数组时一定要先判断book != null,不然调用book.isReserved或者book.ISBN会直接崩掉。
  • 重复元素处理:如果原数组有多本相同ISBN的已预约图书,你要明确是只取第一本还是全部,上面的代码是取第一本,要是需要全部,得调整搜索逻辑改成收集列表。
  • 数组越界:新数组的长度要和原数组一致(或者根据需求调整),别随便写死长度导致元素放不下。

要是你能把完整的故障代码贴出来,我还能更精准地定位问题,但从目前的信息来看,先把Books类的语法错误修好,再对照上面的逻辑检查你的搜索和插入代码,应该就能解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:24:18