3 个支票账户 2 个没有透支的客户的构造函数,但是不想透支的客户得到一个
3 cheque accounts 2 constructors for cust without overdraft but cust who does not want overdraft is getting one
ChequeAccount class 扩展帐户 class。帐户 class 包含 ID、名称和余额属性。 ChequesAccount class 有 overdraftLimit、amtOverdrawn 和 transactionNo 以及 super(ID, name, balance) from Account。我在数组中创建了 3 个 chqAccount 对象并打印了它们的详细信息。 Ringo 已在他的 chq 帐户中选择退出透支功能,因此他需要单独的构造函数。然而,当我打印所有支票账户的详细信息时,他是唯一获得透支便利的人。麻烦你了
public class TestAccounts6
{
private static ChequeAccount[] chqAccount = new ChequeAccount[5];
private static int indexNo = 0;
public static void main(String[] args)
{
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 0, 0, 0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 0, 0, 0);
chqAccount[0] = c1;
chqAccount[1] = c2;
chqAccount[2] = c3;
indexNo = 3;
System.out.printf("%-10s%-10s%-10s%-10s%-10s%-10s%n", "ID", "Name", "Balance",
"Overdraft", "Amount", "No of");
System.out.printf("%-10s%-10s%-10s%-10s%-10s%-10s%n", "", "", "",
"Limit", "Overdrawn", "Transactions\n");
for (int i = 0; i < indexNo; i++)
{
chqAccount[i].print();
}
}
}
public class ChequeAccount extends Account
{
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
// constructor
public ChequeAccount(String ID, String name, double balance,
double overdraftLimit, double amtOverdrawn,
int transactionNo)
{
super(ID, name, balance);
this.overdraftLimit = overdraftLimit;
this.amtOverdrawn = amtOverdrawn;
this.transactionNo = transactionNo;
}
public ChequeAccount(String ID, String name, double balance)
{
super(ID, name, balance);
}
public void print()
{
System.out.printf("%-10s%-10s$%-9.2f$%-9.2f$%-9.2f%-10d%n", ID, name,
balance, overdraftLimit, amtOverdrawn, transactionNo);
}
}
public class Account
{
protected String ID;
protected String name;
protected double balance;
// Constructor
public Account(String ID, String name, double balance)
{
this.ID = ID;
this.name = name;
this.balance = balance;
}
预期的 ringo 不会获得透支额度,而 John 和 Paul 会。与预期相反
它运行正常。因为
- 您已经创建了 3 个 chqAccount 对象
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 0, 0,
0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 0, 0,
0);
- 当您尝试打印此对象的值时。
它正在按以下方式打印。
ID Name Balance Overdraft Amount No of
Limit Overdrawn Transactions
S1111 Paul 45.00 [=12=].00 [=12=].00 0 S2222
Ringo 00.00 000.00 [=12=].00 0 S3333 John
75.00 [=12=].00 [=12=].00 0
当我们观察到上述情况并查看林戈的详细信息时。它的 Balance 为:$10000.00,因为您还没有为 Ringo 分配任何值。但在 ChequeAccount 中如下。
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
它有默认值。以便在打印时采用默认值。
这是代码的预期行为。
public class ChequeAccount extends Account
{
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
...
}
您已经为这些变量分配了默认值。当您为 Ringo 调用构造函数时,这些变量不会更新,因此,将使用您分配的默认值。
对于 Paul 和 John,您正在为这些变量分配新值(全为 0),因此它们将被打印出来。
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 10000, 0, 0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 10000, 0, 0);
public class ChequeAccount extends Account
{
protected double overdraftLimit = 0;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
...
}
使用上述更改修改您的代码现在将显示 Paul 和 John 的透支限额大于零,同时使 林戈的极限0.
ChequeAccount class 扩展帐户 class。帐户 class 包含 ID、名称和余额属性。 ChequesAccount class 有 overdraftLimit、amtOverdrawn 和 transactionNo 以及 super(ID, name, balance) from Account。我在数组中创建了 3 个 chqAccount 对象并打印了它们的详细信息。 Ringo 已在他的 chq 帐户中选择退出透支功能,因此他需要单独的构造函数。然而,当我打印所有支票账户的详细信息时,他是唯一获得透支便利的人。麻烦你了
public class TestAccounts6
{
private static ChequeAccount[] chqAccount = new ChequeAccount[5];
private static int indexNo = 0;
public static void main(String[] args)
{
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 0, 0, 0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 0, 0, 0);
chqAccount[0] = c1;
chqAccount[1] = c2;
chqAccount[2] = c3;
indexNo = 3;
System.out.printf("%-10s%-10s%-10s%-10s%-10s%-10s%n", "ID", "Name", "Balance",
"Overdraft", "Amount", "No of");
System.out.printf("%-10s%-10s%-10s%-10s%-10s%-10s%n", "", "", "",
"Limit", "Overdrawn", "Transactions\n");
for (int i = 0; i < indexNo; i++)
{
chqAccount[i].print();
}
}
}
public class ChequeAccount extends Account
{
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
// constructor
public ChequeAccount(String ID, String name, double balance,
double overdraftLimit, double amtOverdrawn,
int transactionNo)
{
super(ID, name, balance);
this.overdraftLimit = overdraftLimit;
this.amtOverdrawn = amtOverdrawn;
this.transactionNo = transactionNo;
}
public ChequeAccount(String ID, String name, double balance)
{
super(ID, name, balance);
}
public void print()
{
System.out.printf("%-10s%-10s$%-9.2f$%-9.2f$%-9.2f%-10d%n", ID, name,
balance, overdraftLimit, amtOverdrawn, transactionNo);
}
}
public class Account
{
protected String ID;
protected String name;
protected double balance;
// Constructor
public Account(String ID, String name, double balance)
{
this.ID = ID;
this.name = name;
this.balance = balance;
}
预期的 ringo 不会获得透支额度,而 John 和 Paul 会。与预期相反
它运行正常。因为
- 您已经创建了 3 个 chqAccount 对象
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 0, 0, 0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 0, 0, 0);
- 当您尝试打印此对象的值时。 它正在按以下方式打印。
ID Name Balance Overdraft Amount No of
Limit Overdrawn TransactionsS1111 Paul 45.00 [=12=].00 [=12=].00 0 S2222
Ringo 00.00 000.00 [=12=].00 0 S3333 John
75.00 [=12=].00 [=12=].00 0
当我们观察到上述情况并查看林戈的详细信息时。它的 Balance 为:$10000.00,因为您还没有为 Ringo 分配任何值。但在 ChequeAccount 中如下。
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
它有默认值。以便在打印时采用默认值。
这是代码的预期行为。
public class ChequeAccount extends Account
{
protected double overdraftLimit = 10000;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
...
}
您已经为这些变量分配了默认值。当您为 Ringo 调用构造函数时,这些变量不会更新,因此,将使用您分配的默认值。
对于 Paul 和 John,您正在为这些变量分配新值(全为 0),因此它们将被打印出来。
ChequeAccount c1 = new ChequeAccount("S1111", "Paul", 1245.00, 10000, 0, 0);
ChequeAccount c2 = new ChequeAccount("S2222", "Ringo", 2500.00);
ChequeAccount c3 = new ChequeAccount("S3333", "John", 1575.00, 10000, 0, 0);
public class ChequeAccount extends Account
{
protected double overdraftLimit = 0;
protected double amtOverdrawn = 0;
protected int transactionNo = 0;
...
}
使用上述更改修改您的代码现在将显示 Paul 和 John 的透支限额大于零,同时使 林戈的极限0.