Menu
CoddyTech

回顾:银行账户管理器

本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 14 课,共 87 课。

challenge icon

挑战

简单

让我们构建一个完整的 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 在线编译器