给每个新对象一个新的属性值(参与者和起始编号)
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++;
}
}
我的程序是一个体育比赛,有事件、参与者、团队、结果和程序 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++;
}
}