Ok ребята У меня есть абстрактный класс InstrumentАбстрактный класс ArrayList ToString
public abstract class Instrument {
String name;
public Instrument(String name) {
this.name = name;
}
public void warmUp() {
System.out.println("Do re mi");
}
public abstract String Play(String notes);
}
Я использую класс саксофон и трубу для расширения и реализации абстрактного метода
public class Trumpet extends Instrument {
public Trumpet(String name) {
super(name);
}
public String play(String notes) {
String str;
str = name + " plays Trumpet: " + notes;
return str;
}
public String getNotes() {
return notes;
}
public String toString(){
String str = name + " plays Trumpet: " + notes ;
return str;
}
Sax
public class Sax extends Instrument {
public Sax(String name) {
super(name);
}
public String play(String notes) {
String str;
str = name + " plays Trumpet: " + notes;
return str;
}
public String getNotes() {
return notes;
}
public String toString(){
String str = name + " plays Sax: " + notes ;
return str;
}
} Теперь мне нужно создать класс группы, который создает группу, состоящую из трубок и саксов , Он позволяет пользователю добавлять инструмент (саксофон или труба) и воспроизводить входную ноту. Когда группа играет это означает, что все инструменты должны воспроизводить входную ноту.
public class Band extends Instrument{
ArrayList<Instrument> myBand = new ArrayList<Instrument>();
public Band(String name) {
super(name);
}
public void addInstrument(Instrument a) {
myBand.add(a);
}
public String play(String notes) {
for(Instrument inst : myBand) {
inst.play(notes);
System.out.println(inst.play(notes));
}
return toString();
}
Это не обязательно должно быть в массиве, я просто подумал, что это упростит управление. Я считаю, что у меня все прямо до сих пор, но моя проблема возникает в методе воспроизведения в группе, она должна отображать игру под названием инструмента, при этом все инструменты играют одну и ту же ноту.
Пример драйвера:
myBand.addInstrument (new Sax("Anna"));
myBand.addInstrument (new Trumpet("Leon"));
myBand.addInstrument (new Sax("Ben"));
myBand.play("Dum da-da DUM");
Выход:
Анна играет Sax: Dum да-да-ДУМ
Leon играет на трубе: Dum-да-да Dum
Бен играет на саксофоне: Dum da- da DUM
Я знаю, что мне нужен цикл, чтобы перебирать список массивов, но не уверен, как получить метод воспроизведения из класса sax и trumpet, и все они играют одну и ту же ноту.
Спасибо за любую помощь!
Я обновил свой код с контуром, но это выход я получаю:
Anna plays Trumpet: Dum da-da DUM
Leon plays Trumpet: Dum da-da DUM
Ben plays Trumpet: Dum da-da DUM
Как вы его настроили, ваш цикл будет воспроизводить только первый инструмент и вернуться. Если вы хотите вывести то, что все они играют, вы должны конкатенировать возвращаемые значения и возвращаться один раз после завершения цикла. Для конкатенации взгляните на 'StringBuilder'. –
'Band', вероятно, не должен наследовать' Instrument'. – SLaks
Какой результат вы ожидаете? –