【问题标题】:How do I auto-generate an integer value for each time a user input a string value?每次用户输入字符串值时,如何自动生成一个整数值?
【发布时间】:2015-05-09 17:26:05
【问题描述】:

说明:我的程序要求用户通过输入一些信息(即姓名、金额..)来创建一个人的帐户。这些事情是在一个while循环中完成的,以便可以一次又一次地重复任务。所有信息都存储在带有 ArrayLists 的文件中。我有用于创建这些对象的 getter 和 setter 方法。

问题:我希望每次用户选择开设新帐户时,都必须自动创建一个帐号。它应该从 1 开始递增。因此第一个帐户应该有帐户编号:1,第二个帐户应该有 2,依此类推...

主类

//create account
BankAccount bankAcc = new BankAccount();
System.out.println("Enter Full Name:");
bankAcc.setName(sc.nextLine());
/*
System.out.println("Choose an Account Number:");//the acc Num must be generated automatically
bankAcc.setAccNum(sc.nextInt());
*/
System.out.println("Choose the initial amount:");
bankAcc.setInitiateAmount(sc.nextDouble());
//adding those into the arrayList
bankAccounts.add(bankAcc);
//writing into file
rw.writeToFile(bankAccounts);

银行账户

public BankAccount() {
        this.name = null;
        this.accNum = 0;
        this.initiateAmount = 0;
}

public void setAccNum(int accNum) {
        this.accNum = accNum;
}

public int getAccNum() {
        return accNum;
}

【问题讨论】:

  • 那么有一个计数器变量有什么问题?
  • 我建议将帐号创建任务留给数据库。每次插入时自动将 account_number 列增加 1。

标签: java arrays oop increment getter-setter


【解决方案1】:

对于简单的模拟(如学校作业),您可以使用static 变量:

class BankAccount {
    private static int nextAccountNumber = 0;

    static int getNewAccountNumber() {
        int newNumber = nextAccountNumber;
        nextAccountNumber++;
        return newNumber;
    }

    ...

    BankAccount() {
        this.accNum = getNewAccountNumber();
    }
}

Understanding Class Members

【讨论】:

  • 这似乎很有帮助的答案。还有几个问题:(1)。我还需要保留我的 setAccNum 方法吗? (2)。为什么 nextAccountNumber 是私有静态的? (3)。在我的主类中,我应该调用 get 方法还是 set 方法?
  • (1) 对我来说,银行帐户不应该让其帐号更改是有道理的,但这可能并不重要。 (2) 它是私有的,所以外面的任何人都无法更改它。 (3​​) 我不确定你的意思。如果您的意思是像bankAcc.setAccNum(BankAccount.getNewAccountNumber()); 这样从外部设置帐号,这对我来说似乎是多余的,但没有理由不能这样做,而不是像我在构造函数中那样自动设置它。自动完成它是您在循环中必须跟踪的少一件事。
  • 非常感谢,我知道这很让人失望。但事情是有效的。我今天刚试过。谢谢你亲爱的。 xoxo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多