2017-02-05 12 views
-5

Моя программа - это спортивное соревнование с участием участников, участников, команды, результатов и программных классов. Я обнаружил проблему во время окончательного тестирования относительно участников и их атрибута стартового номера.Дайте каждому новому объекту новое значение атрибута (участники и стартовые номера)

Участнику присваивается стартовый номер при добавлении. Первый получает 100, следующие 101, 102 и так далее. Если участник 102 удаляется и добавляется новый участник, новый также получает номер 102, который, как представляется, является моей проблемой. По-видимому, эти стартовые номера не должны использоваться повторно. Есть ли способ дать новым участникам новые стартовые номера, которые не были даны раньше?

От класса Участник:

private int startNumber; 

public int getStartNumber() { 
     return startNumber; 
    } 

    public void setStartNumber(int startNumber) { 
     this.startNumber = startNumber; 
    } 
+ other attributes and methods 

Из класса программы:

private void addStartNumber(Participant p) { 
     if(allParticipants == null || allParticipants.isEmpty()){ 
      p.setStartNumber(100);  
     }else{ 
      p.setStartNumber(findLastStartNumber()+1); 
     } 

    } 

    private int findLastStartNumber(){ 
     int lastNumber = 0; 

     for(int i = 0 ; i < allParticipants.size() ; i++){ 
      lastNumber = allParticipants.get(allParticipants.size()-1).getStartNumber(); 
     } 
     return lastNumber; 
    } 
+0

Keep массива удаленных номеров и выбрать первое значение, что (если она существует) перед приращением –

+1

ли кто дал вам это задание ладно с вами просят помощи в Интернете? Также, пожалуйста, прочитайте здесь вопросы. Ваш крайний срок - * ваш * крайний срок, а не наш, поэтому говорить об этом в вопросе просто загромождает вопрос. –

+1

Любое упоминание о крайнем сроке обычно будет иметь совершенно противоположный эффект, который вы хотите. Просто FYI. –

ответ

0

Когда я понял проблему прямо, то вы можете провести последний стартовый номер в локальной переменной:

private int lastStartNumber = 0; 

private int getNextStartNumber(){ 
    lastStartNumber = lastStartNumber + 1; 
    return lastStartNumber; 
} 
+0

спасибо, это сработало! – Nathalie

0

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

Это единственный код, который нужен для присвоения стартовых номеров:

class Participant { 
    static int nextStartNumber = 100; 
    private int startNumber; 

    public Participant() { 
     this.startNumber = nextStartNumber++; 
    } 
} 
+0

спасибо! он работал @petur – Nathalie