私有createAccountID()
方法应在每次创建帐户时创建新的唯一ID,即创建的第一个帐户将具有ID
“A1000”。每个新帐户的帐户ID将增加1,即第二个
将有ID“A1001”等,不应有任何重复。
我不确定如何启动此方法,除了我创建了一个名为counter的静态变量,该变量设置为0.我认为我必须使用.equals()
方法或其他东西来确保第一个不等于新的那个,它会打印一个错误信息(“复制”)
我也不确定是否要使用public void createAccountID()
或。{
public String createAccountID()
以下是代码:
public class Account
{
private Customer customer;
private String accountID;
private double balance;
private static int counter = 0;
private static final double OPENING_BALANCE = 0.0;
public Account()
{
setCustomer(new Customer());
setBalance(OPENING_BALANCE);
createAccountID();
}
public Account(Customer theCustomer, double theBalance)
{
setCustomer(theCustomer);
setBalance(theBalance);
createAccountID();
}
private void createAccountID()<------------------------------------------------
{
accountID = "A";
for(counter = 0; counter >= 0; ++counter){
accountID+=counter;//stuck in loop doesnt work.
//just thought id try it
}
}
public void setCustomer(Customer theCustomer)
{
if(theCustomer == null){
customer = new Customer();
}
else{
customer = theCustomer;
}
}
public Customer getCustomer()
{
return customer;
}
public void setBalance(double theBalance)
{
if(theBalance <= OPENING_BALANCE){
System.out.println("Error. No Negative values");
}
else{
balance = theBalance;
}
}
public double getBalance()
{
return balance;
}
}
任何帮助赞赏干杯
答案 0 :(得分:1)
您可以将“计数器”起始值设置为1000并将其连接到“A”字符以在“accountID”中设置。
为了确保没有重复项,您可以使用Set接口。例如,私有静态字段中的HashSet实现。
另一种变体是使用TreeSet并使用其last()方法来获取最新的ID。然后你可以避免使用计数器。例如,您可以存储值为“1000”的起始计数器,并使用treeSet.last()递增它,然后存储结果。
另外,我不确定为什么你需要一个公共的createAccountID()。这是应该在你的类中封装的东西,不应该在外部调用。
将getID字段更改为int并在getter方法中连接到'A'可能是有意义的。
// 或者你可能只需要一个起始值为'1000'的静态计数器,然后调用构造函数:
this.accountID = 'A' + counter++;
答案 1 :(得分:0)
如果没有涉及多个线程,使用静态计数器将确保没有重复。
如果有多个线程,您可以使用AtomicInteger。在这种情况下,请确保首先使用incrementAndGet(1)增加AtomicInteger,然后创建ID:
private static final AtomicInteger counter = new AtomicInteger(1000);
private static final String PREFIX = "A";
private String accountID;
private void createID() {
final int number = counter.incrementAndGet(1);
accountID = PREFIX + number;
}
请注意,createID方法应该是私有的,如@Michael Cheremukhin所述。
答案 2 :(得分:0)
创建一个静态变量计数器,将其连接到A并递增它。保持你的功能私密,你不应该在课外打电话。
private void createAccountID()
{
accountID = "A" + counter++;
}