数组,不适用于参数

时间:2012-12-28 12:27:48

标签: java arrays inherited-constructors

我想将一个Guest添加到数组客户端,你们可以看看我做错了什么,或者我不能调用一个字符串,构造函数,构造函数?

错误说: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)

Class Cake:

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"));

2 个答案:

答案 0 :(得分:2)

您将错误的参数传递给方法。 addGuest只能在程序中获取guest参数。或者你需要重载方法来支持你的参数,比如addGuest(String,Tea,Cake),或者你只需​​要将访客名称作为参数传递。

答案 1 :(得分: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构造函数所需的参数传递给了错误的方法(addGuest(<Guest>)),这需要实际的Guest-object。

修改
此外,这也不起作用

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

因为table.addGuest(...)的类型为void,所以它不会返回任何内容,因此会出现编译错误。
我建议您重新考虑使用guests[],您可以使用集合(例如LinkedListArrayList)来解决此问题。