我已经尝试过了:
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是一个字符串,它包含某人的名字!这不是一个整数!
我希望你理解我的意思!
答案 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
的值。
修改
好的,所以我明白了你的意思,但是一个变量不能以一个数字开头,或者仅仅是一个数字。相反,为什么不将这些帐户添加到array
或List
实施?
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