Java 构造函数addCustomer(String,String)未定义

Java 构造函数addCustomer(String,String)未定义,java,Java,我正在尝试创建这些命令,但在创建AddPatron if (cmd.equals("addbook")) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Title: "); String title = br.readLine(); System.out.pri

我正在尝试创建这些命令,但在创建
AddPatron

if (cmd.equals("addbook")) {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Title: ");
            String title = br.readLine();
            System.out.print("Author: ");
            String author = br.readLine();
            System.out.print("Publication Year: ");
            String publicationYear = br.readLine();
            return new AddBook(title, author, publicationYear);

        } else if (cmd.equals("addpatron")) {
            BufferedReader brr = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Name: ");
            String name = brr.readLine();
            System.out.print("Phone: ");
            String phone = brr.readLine();
            return new AddPatron(name, phone);

它说要添加构造函数,但是我已经完全按照
AddBook
的方式完成了。然而,唯一的区别是,
AddPatron
类有两个额外的
字符串,我没有包括它们,我想读入它们

public class AddPatron implements Command {

    private final String name;
    private final String phone;
    private final String id;
    private final String list_of_books_borrowed;

    public AddPatron(String name, String phone, String id, String list_of_books_borrowed){
        this.name = name;
        this.phone = phone;
        this.id = id;
        this.list_of_books_borrowed = list_of_books_borrowed;
    }
}
此构造函数需要4个不同的字符串

new AddPatron(name, phone);
但在这里,您只传递2个字符串。您需要传递另外两个或编写一个只接受名称和电话的新构造函数


注意,类代表事物,它们的名称通常应该是名词。另一方面,方法是动作,它们的名称应该是动词。因此,您可以有一个名为
addPatron()
的方法和一个名为
Patron
的类。命名一个类
AddPatron
可能会令人困惑。

如果编译器告诉您没有以两个字符串作为参数的构造函数,那么这意味着没有这样的构造函数。因此,创建它,或者修复代码,以便调用其中一个已存在的构造函数。您不能在需要时忽略参数。请提供一个。你真的有一个名为
addconsor
的类吗?或者
addconsor()
是一个方法吗?显示
addconsor
类。错误是不言自明的:这里没有接受2个字符串作为参数的构造函数。注意,类表示事物,它们的名称通常应该是名词,例如
Book
Patron
。另一方面,方法是动作,它们的名称应该是动词。因此,您可以有一个名为
addPatron()的方法
但是你应该给你的类命名为
赞助人
。谢谢你的回答@code学徒,但是这是课堂作业的一部分,代码是由我的老师编写的,也像@roddyoffrozenpeas,我应该在构造函数中传递2个空参数吗?@KaziIlyas,它如何阻止你向构造函数传递4个字符串?@jbnizent i不明白你的意思事实上,你的老师写的代码并没有改变Java的工作方式。如果构造函数接受4个字符串作为参数,则必须向其传递4个字符串。不是2。如果您认为最后两个字符串应该为null,则传递null。如果你认为它们应该是其他的,那么传递其他的。如果你意识到你实际上应该要求用户输入id和借来的书籍列表,那么就这样做。
public AddPatron(String name, String phone, String id, String list_of_books_borrowed)
new AddPatron(name, phone);