Массив, не применимый для аргумента
Я хочу добавить гостя в массив гостей, вы, ребята, видите, что я делаю не так, или я не могу назвать строку, конструктор, конструктор?
Ошибка говорит: 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)
Конструктор класса Чай это:
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"));
2 ответа
Вы должны использовать,
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"));
потому что вы передаете аргументы, необходимые для конструктора Гостя, неправильному методу (addGuest(<Guest>)
), что требует фактического гостевого объекта.
РЕДАКТИРОВАТЬ
Далее это тоже не сработает
guests[0]=table.addGuest(...);
так как table.addGuest(...)
имеет тип void
, так что ничего не вернется, поэтому вы получите ошибку компилятора.
Я рекомендую переосмыслить использование guests[]
, вы могли бы использовать коллекцию (например, LinkedList
или же ArrayList
) Для решения этой проблемы.
Вы передаете неверные параметры методу. addGuest может принимать только гостевой параметр в вашей программе. либо вы должны перегрузить метод для поддержки ваших параметров, таких как addGuest(String, Tea,Cake), либо вам нужно передать только имя гостя в качестве параметра.