给每个新对象一个新的属性值(参与者和起始编号)

Give every new object a new attribute value (participants and start numbers)

我的程序是一个体育比赛,有事件、参与者、团队、结果和程序 classes。我在最终测试期间发现了有关参与者及其起始编号属性的问题。

参与者在添加时会得到一个起始编号。第一个获得 100,接下来的 101、102 等等。如果删除参与者 102 并添加新参与者,新参与者也会获得编号 102,这似乎是我的问题。显然这些起始编号不应该被重复使用。有没有办法为新参与者提供以前没有提供的新开始号码?

来自参与者class:

private int startNumber;

public int getStartNumber() {
        return startNumber;
    }

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

来自节目class:

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;
    }

当我理解了问题之后,您可以将最后一个起始编号保存在局部变量中:

private int lastStartNumber = 0;

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

让每个参与者的构造器管理起始编号。

这是分配起始编号所需的唯一代码:

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

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