Java 如何给表元素下一个数字?

Java 如何给表元素下一个数字?,java,swing,netbeans,Java,Swing,Netbeans,我有一个jTable,在其中添加名为customers的元素。列表中的每个客户都会获得一个新的帐号,其代码如下。numberOfAccounts是一个变量,Account()是一个构造函数(我是编程新手)。两者都是Account类的一部分,Account类是Customer类的一部分,Customer类共同构成Bank类 private static int numberOfAccounts = 1000000; Account() { accountNumber = getNextA

我有一个jTable,在其中添加名为customers的元素。列表中的每个客户都会获得一个新的帐号,其代码如下。numberOfAccounts是一个变量,Account()是一个构造函数(我是编程新手)。两者都是Account类的一部分,Account类是Customer类的一部分,Customer类共同构成Bank类

private static int numberOfAccounts = 1000000;

Account() {
    accountNumber = getNextAccountNumber();
}

public static int getNextAccountNumber(){
    return ++numberOfAccounts;
}

private int findValidAccountNumber() {
    int accountNumber = 0;
    do {
        accountNumber = Account.getNextAccountNumber();
    } while(accountExists(accountNumber));      
    return accountNumber;
}

private boolean accountExists(int accountNumber) {
    for(Customer c : customers){
        if(c.getAccount().getAccountNumber() == accountNumber) {
            return true;
        }
    }
    return false;
}

代码运行良好,但假设我有5个客户:1000001到1000005。当我从表中删除一个客户(如客户1000002)并添加一个新客户时,我希望它再次具有编号1000002。但它的号码是1000006。我做错了什么?如果我没有正确解释,很抱歉。

“我做错了什么?”-没什么,您的
getNextAccountNumber
每次调用时都会简单地递增该值。您的问题是知道何时可以重用某个值。解决方案通常并不简单。您需要知道以前分配的(和正在使用的)所有值,然后能够计算序列中的任何间隙,以便找到可以重复使用的值……您可能希望创建具有FIFO行为的列表,并添加已删除客户的id。如果要添加下一个,请检查列表(FIFO)。如果为空,则表示列表中没有“漏洞”,您应该不断增加
numberOfAccounts
。否则,如果您的列表(FIFO)不为空,则表示存在漏洞,您应该获取第一个元素id并将其添加到新客户中。为了更快地获得更好的帮助,请发布或。@MadProgrammer我注意到,当我重新启动应用程序时,新客户确实会获得删除的编号。怎么会?我没有真正得到
return++numberOfAccounts部分。重新启动应用程序时,
numberOfAccounts
将重置为
1000000
++numberOfAccounts
正在对值进行预增量(
1+numberOfAccounts