回顾:银行账户管理器
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 14 课,共 87 课。
挑战
简单让我们构建一个完整的 BankAccount 系统,把你学过的封装、访问修饰符、getter、setter 和 final 关键字结合起来。
你将创建两个文件来组织代码:
BankAccount.java:设计一个安全的银行账户类,保护敏感的财务数据:- 不可变的账号,账户创建后永远不能更改
- 从 0.0 开始的私有余额,只能通过受控的方法修改
- 私有的账户所有者姓名,可以获取,但不能直接更改
- 一个接收账号和账户所有者姓名的构造函数
- 一个用于获取账号的 getter
- 一个用于获取账户所有者姓名的 getter
- 一个用于获取余额的 getter
- 一个
deposit(double amount)方法,仅当金额为正数时才增加余额,成功时返回true,金额被拒绝时返回false - 一个
withdraw(double amount)方法,仅当金额为正数且余额充足时才扣除余额,成功时返回true,金额被拒绝时返回false - 一个
getAccountSummary()方法,返回:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(余额格式为 2 位小数)
Main.java:创建一个 BankAccount 并执行一系列交易。你将收到 5 个输入:账号、账户所有者姓名、存款金额、第一次取款金额和第二次取款金额。打印 4 行:- 存款结果:
Deposit: true或Deposit: false - 第一次取款的结果:
Withdraw 1: true或Withdraw 1: false - 第二次取款的结果:
Withdraw 2: true或Withdraw 2: false - 最终账户摘要
- 存款结果:
你将按顺序收到 5 个输入:accountNumber(String)、ownerName(String)、depositAmount(double)、withdrawAmount1(double)、withdrawAmount2(double)。
要将余额格式化为 2 位小数,你可以使用 String.format("%.2f", balance)。
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取输入
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO:使用 accountNumber 和 ownerName 创建一个 BankAccount 对象
// TODO:执行存款操作,并将结果打印为 "Deposit: true" 或 "Deposit: false"
// TODO:执行第一次取款操作,并将结果打印为 "Withdraw 1: true" 或 "Withdraw 1: false"
// TODO:执行第二次取款操作,并将结果打印为 "Withdraw 2: true" 或 "Withdraw 2: false"
// TODO:打印账户摘要
}
}
面向对象编程中的所有课
自己练习: Java 在线编译器