как вернуть всех игроков в конкретный футбольный клуб - PullRequest
0 голосов
/ 13 ноября 2018

Я не новичок в ИТ или переполнении стека в целом, но я новичок в java + oop, поэтому, пожалуйста, прости меня, если синтаксис не правильный, Я пытаюсь повысить уровень в Java довольно быстро и мне нужна помощь в проекте, над которым я работаю, чтобы улучшить его.

Я пытаюсь воссоздать самую базовую версию футбольного менеджера, и пока у меня есть класс "Клуб" и класс "Игрок", я создал несколько клубов со своими атрибутами и ценностями, и теперь нравится назначать игроков в каждый клуб. У меня есть конструктор в каждом классе, который будет создавать отдельные объекты для каждого клуба и игрока, поэтому, когда я создаю Маркуса Рашфорда, это выглядит так ...

Player MarcRash = new Player("Marcus", "Rashford", "CF", 10, 20, Mutd);

Мут, будучи объектом Клуба, который я создал ранее.

10 - номер его рубашки, Ему 20 лет // неважно

Вопрос: Как я могу создать метод в своем классе Club, в котором будут перечислены все игроки, назначенные в настоящее время каждому клубу?

то есть: все игроки, которые в настоящее время имеют тот же объект, что и последний параметр при их создании?

void listPlayers(Club club) {
 //something here
}

спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

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

Player marcRash = new Player("Marcus", "Rashford", "CF", 10, 20 );
mutd.add( marcRash );

Пожалуйста, при программировании на Java следуйте рекомендациям Java по написанию кода. Имена переменных, такие как marcRush и mutd, начинаются со строчной буквы.

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

public class Club {
   private ArrayList<Player> members = new ArrayList<>();

   public void add( Player player ) {
      members.add( player );
   }

   public String listMemebers() {
     if( members.size() == 0 ) return "";
     StringBuilder sb = new StringBuilder();
     for( Player p : members ) {
       sb.append( p.getFirstName() );
       sb.append( " " );
       sb.append( p.getLastName() );
       sb.append( ", " );
    }
    sb.setLength( sb.length()-2 );
    return sb.toString();
  }
}
0 голосов
/ 13 ноября 2018

Вы можете создать список для объекта Club, как этот

https://docs.oracle.com/javase/8/docs/api/java/util/List.html

List<Player> players; И в своем конструкторе вы добавляете каждого игрока в список.Этот тип структуры позволит вам иметь всех игроков, связанных с клубом

. Затем вы можете построить свой метод для печати каждого объекта в списке

List<Player> listPlayers(Club club) { //Loop through the elements on the list // print each Player }

0 голосов
/ 13 ноября 2018

Похоже, вам нужен контейнер для клубных классов под названием Лига. Класс League может содержать метод, который принимает в качестве параметра объект Club и вызывает метод класса Club для возврата всех игроков в своем экземпляре (при условии, что по какой-либо причине вам нужен этот API, доступный в классе League). .

Игроки для клуба будут содержаться в HashSet в классе Club. Таким образом, переменная класса в классе Club будет: HashSet<Player> players;.

Просто заметка. Я бы использовал HashSet (вместо ArrayList), чтобы предотвратить дублирование игроков в одном клубе - что было бы невозможно в реальном мире. Но чтобы использовать HashSet, содержащийся элемент (Player) должен был бы реализовать методы equals и hashCode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...