Массив, не применимый для аргумента

Я хочу добавить гостя в массив гостей, вы, ребята, видите, что я делаю не так, или я не могу назвать строку, конструктор, конструктор?

Ошибка говорит: 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), либо вам нужно передать только имя гостя в качестве параметра.

Другие вопросы по тегам