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

如何获取ArrayList中图书的状态?实现展示全部图书及状态的方法

解决ArrayList图书状态获取与showAllBooks方法实现问题

嘿,我来帮你搞定这个需求!你要实现的showAllBooks方法核心就是遍历ArrayList<Book>集合,取出每本书的状态并整理成字符串返回。咱们一步步来:

第一步:确保Book类具备状态相关的方法

首先你的Book类需要有状态属性和对应的获取方法,这样Catalog类才能拿到每本书的状态。比如这样定义Book类:

import java.util.Arrays;

public class Book {
    private String title; // 书名
    private String state; // 状态:INLIBRARY/ONLOAN/LOST

    // 构造方法
    public Book(String title, String state) {
        this.title = title;
        // 增加状态合法性校验,避免传入无效值
        if (Arrays.asList("INLIBRARY", "ONLOAN", "LOST").contains(state)) {
            this.state = state;
        } else {
            throw new IllegalArgumentException("无效的图书状态:" + state);
        }
    }

    // 获取书名
    public String getTitle() {
        return title;
    }

    // 获取状态
    public String getState() {
        return state;
    }

    // 可选:修改状态的方法
    public void setState(String state) {
        if (Arrays.asList("INLIBRARY", "ONLOAN", "LOST").contains(state)) {
            this.state = state;
        } else {
            throw new IllegalArgumentException("无效的图书状态:" + state);
        }
    }
}

第二步:完善Catalog类的showAllBooks方法

接下来咱们把你没写完的showAllBooks方法补全,这里推荐用增强for循环(简洁易读)和StringBuilder(高效拼接字符串,避免性能浪费):

import java.util.*;
import javax.swing.JLabel;

public class Catalog extends JLabel{ 
    ArrayList<Book> books; 

    public Catalog() { 
        books = new ArrayList<Book>(); 
    }//end constructor 

    public void addBook(Book b) { 
        books.add(b); 
    }//end addBook 

    public String showAllBooks() {
        // 用StringBuilder高效构建结果字符串
        StringBuilder result = new StringBuilder();
        
        // 遍历ArrayList中的每一本图书
        for (Book book : books) {
            result.append("书名:").append(book.getTitle())
                  .append(" | 状态:").append(book.getState())
                  .append("\n"); // 换行分隔每本书
        }

        // 处理空目录的情况,返回友好提示
        if (result.length() == 0) {
            return "当前图书目录为空";
        }

        return result.toString();
    }
}

额外说明:两种遍历方式的选择

如果你需要用到索引(比如显示图书序号),也可以用传统的for循环:

public String showAllBooks() {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < books.size(); i++) {
        Book book = books.get(i);
        result.append("第").append(i + 1).append("本:")
              .append(book.getTitle()).append(" | 状态:")
              .append(book.getState()).append("\n");
    }
    return result.length() == 0 ? "当前图书目录为空" : result.toString();
}

这样你的showAllBooks方法就能返回所有图书及其状态啦,而且代码清晰易维护~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:09