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

如何修改MIT旧课程相关代码,消除"The constructor Book(String) is undefined"编译错误?

解决"The constructor Book(String) is undefined"错误的方案

嘿,这个问题我之前踩过坑!你现在的核心问题是导错了Book类——你导入的java.awt.print.Book是Java AWT库中用于处理打印任务的类,它压根就没有接受String参数的构造方法,这就是报错的原因。

下面是具体的修复步骤:

步骤1:移除错误的导入语句

删掉代码里的这一行:

import java.awt.print.Book;

因为你需要的是自己定义的Book类,不是系统提供的打印用Book类。

步骤2:创建自定义的Book类

你需要写一个自己的Book类,至少包含接受String参数的构造方法(比如用来初始化书名)。示例代码如下:

public class Book {
    private String title;

    // 这里就是你需要的String参数构造方法
    public Book(String title) {
        this.title = title;
    }

    // 可以根据需求添加其他方法,比如获取书名
    public String getTitle() {
        return title;
    }
}

步骤3:确保Book类和Library类的访问性

  • 如果Book类和Library类在同一个包下,不需要额外导入,直接使用即可。
  • 如果不在同一个包,记得在Library类顶部导入你自己的Book类(比如import com.yourpackage.Book;,替换成实际的包路径)。

修复后的完整Library类代码

import java.util.*;

public class Library {
    String libraryAddress;
    ArrayList<Book> books = new ArrayList<Book>();

    public Library(String address) {
        libraryAddress = address;
    }

    public void addBook(Book book) {
        books.add(book);
    }

    public void printAddress() {
        System.out.println(libraryAddress);
    }

    // 可以添加其他你需要的方法,比如打印所有书籍
    public void printBooks() {
        if (books.isEmpty()) {
            System.out.println("No books in this library.");
        } else {
            for (Book book : books) {
                System.out.println(book.getTitle());
            }
        }
    }

    public static void main(String[] args) {
        // 测试示例
        Library myLibrary = new Library("123 Main St");
        myLibrary.addBook(new Book("The Great Gatsby"));
        myLibrary.addBook(new Book("1984"));

        myLibrary.printAddress();
        myLibrary.printBooks();
    }
}

这样修改后,代码就能正常编译运行了,再也不会出现构造方法未定义的错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:23:07