-1

我想在客人数组中添加一个客人,你们能看到做错了什么,或者我不能调用一个字符串、构造函数、构造函数吗?

错误说:the method addGuest(Guest) in the type table is not applicable for the argument ( String, Tea,Cake)。我正在尝试将客人放入阵列

这是我的代码。

guests[0]=table.addGuest("Alice",new Tea("RoseShip Tea",false,true),new Cake("Chocolate Sponge"));

Guest 类的构造函数是这样的:

public Guest(String name, Tea newTea, Cake newCake)

Tea 类的构造函数是:

public Tea(String name, boolean suiker, boolean melk)

类蛋糕:

public Cake(String name) {
    this.name = name;
}

addGuest 方法:

public void addGuest(Guest guest)

我想做的是:

guests[0]=table.addGuest(new Guest("Alice"),new Tea("RoseShip Tea",false,true),new Cake("Chocolate Sponge"));
4

2 回答 2

2

您将错误的参数传递给该方法。addGuest 只能在您的程序中使用 guest 参数。要么你必须重载方法来支持你的参数,比如 addGuest(String, Tea,Cake) ,要么你必须只传递客人姓名作为参数。

于 2012-12-28T12:40:35.493 回答
1

你应该使用,

Guest g = new Guest("Alice",new Tea("RoseShip Tea",false,true),new Cake("Chocolate Sponge"));
table.addGuest(g);

代替

guests[0]=table.addGuest("Alice",new Tea("RoseShip Tea",false,true),new Cake("Chocolate Sponge"));

因为你将Guest的构造函数所需的参数传递给了错误的method( addGuest(<Guest>)),它需要实际的Guest对象。

编辑
此外,这也行不通

guests[0]=table.addGuest(...);

因为table.addGuest(...)是 type void,所以它不会返回任何东西,所以你会得到一个编译器错误。
我建议重新考虑使用guests[],您可能可以使用集合(如LinkedListArrayList)来解决此问题。

于 2012-12-28T13:23:09.610 回答