如何将某个实例的名称设置为整数的值?

时间:2013-07-17 09:47:13

标签: java

我已经尝试过了:

public static void accountTypeSavings() {
    boolean b = true;
    while (b) {
        String startBalanceString = JOptionPane.showInputDialog(null, "Enter the starting balance in dollars without the dollar sign.");
        try {
            double startBalance = Double.parseDouble(startBalanceString);
            int accountID = 1;
            SavingsAccount accountID = new SavingsAccount(holder, startBalance);
            accountID += 1;
            b = false;
        }
        catch (final Exception ignored) {
            JOptionPane.showMessageDialog(null, "Only enter numbers, please.");
        }
    }
}

创建一个整数并将储蓄帐户的名称设置为整数。但那给了我错误“Duplicate local variable accountID”。

使用我的应用程序时,我希望得到这个:

SavingsAccount sa1 = new SavingsAccount(holder, startBalance);
SavingsAccount sa2 = new SavingsAccount(holder, startBalance);
SavingsAccount sa3 = new SavingsAccount(holder, startBalance);

参数是已经初始化的变量!

我想将新的SavingsAccount的名称设置为accountID的值。因此,如果我创建一个SavingsAccount的新实例,我希望我的应用程序将其名称设置为sa1。如果我之后创建另一个,请将其命名为sa2,sa3,sa4等。

PS:Holder是一个字符串,它包含某人的名字!这不是一个整数!

我希望你理解我的意思!

4 个答案:

答案 0 :(得分:1)

int accountID = 1;
SavingsAccount accountID = new SavingsAccount(holder, startBalance);

您不能拥有2个同名变量。

答案 1 :(得分:1)

  

但是如果有第二个储蓄账户,我如何让应用程序创建一个名为sa2的储蓄账户,然后再创建一个名为sa3等的储蓄账户?

声明一个全局int,比方说索引。

private int index;

在构造函数中将其设置为1:

this.index = 1;

每当有人创建储蓄帐户时,请增加索引。

SavingsAccount accountID = new SavingsAccount(holder + index++, startBalance);

这会将index的当前值添加到holder字符串的末尾,然后增加index的值。

修改

好的,所以我明白了你的意思,但是一个变量不能以一个数字开头,或者仅仅是一个数字。相反,为什么不将这些帐户添加到arrayList实施?

List<SavingsAccount> accounts = new ArrayList<SavingsAccount>();
accounts.add(new SavingsAccount("Dave", something);
accounts.add(new SavingsAccount("Bill", somethingElse);

然后,要获得每个帐户,您可以使用以下内容:

accounts.get(1);

注意:此列表基于0。这意味着accounts.get(0);将获得第一项。

答案 2 :(得分:0)

你需要的是一个list.So添加另一个静态变量savingsAccountList

public static List<SavingsAccount> savingsAccountList = new ArrayList<SavingsAccount>();

您可以使用自动递增变量m并将其用作静态类变量:

public static int m=0;

public static void accountTypeSavings() {
        boolean b = true;

        holder="holderName"
        while (b) {
            String startBalanceString = JOptionPane.showInputDialog(null, "Enter the starting balance in dollars without the dollar sign.");
            try {
                double startBalance = Double.parseDouble(startBalanceString);
                SavingsAccount sa = new SavingsAccount(holder + m, startBalance);
                m++
                savingsAccountList.add(sa)
                b = false;
            }
            catch (final Exception ignored) {
                JOptionPane.showMessageDialog(null, "Only enter numbers, please.");
            }
        }
    }

您还需要导入java.util.List。

答案 3 :(得分:0)

您可能希望在方法之外的列表中存储。我建议一个领域:

private static List<SavingsAccount> savingsAccounts = new ArrayList<SavingsAccount>();

你的方法可以这样:

public static void accountTypeSavings() {
    boolean b = true;
    while (b) {
        String startBalanceString = JOptionPane.showInputDialog(null, "Enter the starting balance in dollars without the dollar sign.");
        try {
            double startBalance = Double.parseDouble(startBalanceString);
            savingAccounts.add(new SavingsAccount(holder, startBalance));
            b = false;
        }
        catch (final Exception ignored) {
            JOptionPane.showMessageDialog(null, "Only enter numbers, please.");
        }
    }
}

稍后您可以从列表中访问保存帐户以修改其属性:

savingAccounts.get(0).addAmount(amount); // something like this to add money to the first account