为每个新对象提供一个新的属性值(参与者和起始数字)

时间:2017-02-05 20:31:55

标签: java object attributes add

我的课程是一项体育比赛,包括活动,参与者,团队,成绩和课程。我在最终测试期间发现有关参与者及其起始编号属性的问题。

添加时会为参与者提供一个起始编号。第一个获得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;
    }

2 个答案:

答案 0 :(得分:0)

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

private int lastStartNumber = 0;

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

答案 1 :(得分:0)

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

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

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

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