2013-12-10 4 views
-2

Почему это не работает для меня?Arraylist не может добавить элемент

public class Band { 

    public void addMember(Musician musician) {  
    musicians.add(musician); 
    System.out.println("Muscian: " + musician + "was successfully added"); 
    } 
} 

public static void main(String[] args) { 

     Band Beatles = new Band("Beatles"); 
     Beatles.addMember("John Lennon"); 
} 

public class Musician { 


private String name; 

    public Musician(String name, Instrument instrument) { 
     this.name = name; 
     Instrument Guitar = instrument; 
    } 

    public void play() { 

    } 
} 
+0

Откуда вы знаете, что оно не работает? –

+0

Beatles - это группа. Метод addMember принимает музыкант, который является другим классом. Вы передаете строку, которая является именем музыканта, но вы не создаете новый объект Musician. –

+0

'Beatles.addMember (« John Lennon »);' должен быть 'Beatles.addMember (новый музыкант (« John Lennon »,« Instrument »));' – Gustavo

ответ

0
Beatles.addMember("John Lennon"); 

должен быть

Beatles.addMember(new Musician("John Lennon", new Instrument(new Guitar())); 

Я подозреваю, не видя фактический класс инструмента, основанный на ваш комментарий, что эта линия должна работать.

Проблема в том, что вы обрабатываете некоторые объекты как строки. Вам нужно создать объект из класса, который сначала определяет его.

+0

Я не работаю. 'public static void main (String [] args) { \t \t Band Beatles = новый Band (« Beatles »); Beatles.addMember (новый музыкант («Джон Леннон», новый инструмент (новая гитара()))); Beatles.addSong (новая песня («Вчера», 122, 4)); } ' Ошибка: Гитара не может быть разрешена для ввода. Класс Инструмента: 'открытого интерфейс Инструмент { \t класс гитары { \t \t общественной гитара() { \t \t \t System.out.println ("Роса Дау ди"); \t \t} \t \t использование общественного String() { \t \t \t возвращение нулевой; \t \t} \t} \t класса Барабаны { \t \t общественных Барабаны() { \t \t \t System.out.println ("бом бомж TJI"); \t \t} \t \t использование общественного String() { \t \t \t возвращение нулевой; \t \t} \t} } ' – vanark

+0

И как вы видите здесь, я не думаю, что им разрешено делать конструктор и переменные в классе гитары - Это asignment. xup.dk/instrument.jpg – vanark

+0

Я не уверен - может быть, барабаны и гитара не должны быть подклассами, но их собственными классами? Это ошибка? - Или же uml на http://www.xup.dk/instrument.jpg подразумевает, что это должны быть подклассы? – vanark