You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免布尔方法中对象被覆盖?账户添加布尔方法实现问询

搞定账户添加方法:防止对象覆盖+满足业务逻辑

嘿,我来帮你解决这个问题!既要实现符合要求的布尔型账户添加方法,又要避免对象被覆盖,核心就是只在目标位置为空的时候才赋值新对象——绝不能随便给已经存在的账户引用重新赋值。下面一步步拆解实现:

先理清楚业务逻辑的关键点

你需要的addAccount方法要满足:

  • 接收利率(rate)和账户类型两个参数
  • 客户没账户时,把新账户设为第一个;已有一个时设为第二个
  • 客户已有两个账户就返回false,否则返回true

同时要避免对象覆盖:意思是不能把已经存在的第一个/第二个账户给替换掉,比如不能在已有第一个账户的情况下,直接把新账户赋值给firstAccount,这样原来的账户对象就被覆盖丢失了。

完整代码实现

1. 先定义Account类封装账户信息

首先得有一个账户类来存利率和类型,这样我们创建的账户对象才有意义:

public class Account {
    private double rate;
    private String accountType;

    // 构造方法初始化账户信息
    public Account(double rate, String accountType) {
        this.rate = rate;
        this.accountType = accountType;
    }

    // 可选:添加getter方法,方便后续查看账户详情
    public double getRate() {
        return rate;
    }

    public String getAccountType() {
        return accountType;
    }
}

2. 实现Customer类和核心的addAccount方法

在客户类里维护两个账户引用,然后按规则添加:

public class Customer {
    // 用两个变量存客户的两个账户,初始都是null(没有账户)
    private Account firstAccount;
    private Account secondAccount;

    // 核心的添加账户方法
    public boolean addAccount(double rate, String accountType) {
        // 第一步:先检查是否已经有两个账户了,满了直接返回false
        if (firstAccount != null && secondAccount != null) {
            return false;
        }

        // 创建新的账户对象(先把对象创建好,再决定放哪里)
        Account newAccount = new Account(rate, accountType);

        // 第二步:按顺序赋值,先看第一个账户是否为空
        if (firstAccount == null) {
            firstAccount = newAccount;
        } else {
            // 第一个账户已存在,就赋值给第二个
            secondAccount = newAccount;
        }

        // 添加成功,返回true
        return true;
    }

    // 可选:添加一个打印账户的方法,方便测试验证
    public void printAccounts() {
        System.out.println("第一个账户: " + (firstAccount != null ? firstAccount.getAccountType() + " (利率: " + firstAccount.getRate() + "%)" : "无"));
        System.out.println("第二个账户: " + (secondAccount != null ? secondAccount.getAccountType() + " (利率: " + secondAccount.getRate() + "%)" : "无"));
    }
}

3. 在Assignment6中测试方法

把你的主类补全,测试一下功能是否正常:

public class Assignment6 {
    public static void main(String[] args) {
        Customer customer = new Customer();

        // 测试添加第一个账户
        System.out.println("添加第一个账户: " + customer.addAccount(2.5, "储蓄账户")); // 输出true
        // 测试添加第二个账户
        System.out.println("添加第二个账户: " + customer.addAccount(1.2, "活期账户")); // 输出true
        // 测试添加第三个账户(应该失败)
        System.out.println("添加第三个账户: " + customer.addAccount(3.0, "投资账户")); // 输出false

        // 打印账户信息,验证是否正确
        customer.printAccounts();
    }
}

防止对象覆盖的关键细节

我特意在代码里做了这几点来避免覆盖:

  • 先判断是否满员:一进入方法就检查两个账户是否都存在,满了直接返回,避免多余操作
  • 先判断变量是否为空再赋值:给firstAccount或secondAccount赋值前,先确认它们是null(没有账户),这样就不会把已有的账户对象覆盖掉
  • 提前创建新对象:先把新账户对象实例化好,再决定放到哪个位置,避免重复创建或者误操作

运行结果

运行主类后,你会看到这样的输出:

添加第一个账户: true
添加第二个账户: true
添加第三个账户: false
第一个账户: 储蓄账户 (利率: 2.5%)
第二个账户: 活期账户 (利率: 1.2%)

内容的提问来源于stack exchange,提问作者Julien Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:31:35