当前位置: 首页 > 知识库问答 >
问题:

儿童无法获得更新的父值

欧阳博超
2023-03-14

我试图使用继承创建一个银行系统,当子级BankAccount试图检索它的父值时,问题出现了,它得到了Bank类的初始值,numberAccounts = 0和空的registeredAccounts。

首先创建3个初始银行账户。

Bank bank = new Bank();
bank.createBankAccount("Tonny");
bank.createBankAccount("Michael");
bank.createBankAccount("Mark");

然后Bank类创建并生成它们给出的每个人的银行帐户和号码,numberAccounts和registeredAccounts的当前值应该已经更改。

public class Bank{
    protected BankAccount[] registeredAccounts;
    protected int numberAccounts= 0;
    private final int numberAccountAllowed = 50;
    
    public Bank() {
        registeredAccounts= new BankAccount[numberAccountAllowed];
    }

    public void createBankAccount(String name){
        int numberBankAccountGenerated;     
        if(numberAccounts >= numberAccountAllowed){
            System.out.println("Max number of bank accounts reached, can't create another one");
            return;
        }

        boolean isNumberAvailable = true;
    
        do{
            numberBankAccountGenerated = new Random().nextInt(99999 + 100000) + 100000;
        
            for(int i = 0; i < numberAccounts && isNumberAvailable; i++){
                if(numberBankAccountGenerated == registeredAccounts[i].numberAccount)
                    isNumberAvailable = false;
            }
        }while(!isNumberAvailable);
    
        registeredAccounts[numberAccounts] = new BankAccount(name, numberBankAccountGenerated);
        numberAccounts++;

        System.out.printf("A new bank account has been created with the name \"%s\" and number: #%d.\n\n", name, numberBankAccountGenerated);
    }
}

当我尝试调用超类值来操作帐户之间的余额转移时,我意识到这些值是类 Bank 的首字母。

public class BankAccount extends Bank{
    /*
    .
    */

    public void balanceTransfer(int numberBankAccount, int amount ){
        int match = -1;

        for(int i = 0; i < super.numberAccounts && match == -1; i++)
            if(numberBankAccount == super.registeredAccounts[i].numberAccounts)
                match = i;               
    
        if(match == -1){
            System.out.println("Bank account not found.");
            return;
        }
        
        super.registeredAccounts[match].addBalance(amount);
        this.addBalance(-amount);
    }
}

我想我有一个执行流程问题,但我无法用我的知识找出真正的问题。

共有1个答案

柴砚文
2023-03-14
registeredAccounts[numberAccounts] = new BankAccount(name, numberBankAccountGenerated); // dumplicate another bank here

当您按上述方式运行代码时,obj BankAccount有自己的数字账户值,其值与创建它的银行无关。我认为你的目的是在银行中共享价值和金额,这可能是一种分离银行BankAccount类的方法,设计如何在银行中共享这些属性的方式,例如,通过参数。

 类似资料:
  • 大家好,我正在尝试从firebase检索数据,并根据我单击的RecyclerView显示它们,并将名称传递给下一个活动。 每当我尝试这样做时,它总是会关闭应用程序并再次打开。 但是,每当集合中没有“Dates_Log_In”时,它就会运行,但不会显示任何类型的数据。 这是我用来显示RecyclerView中所有数据的类 考勤班 AttendanceListAdapter 这就是我传递数据的地方,它

  • 我有一个脚本,可以动态检索我编写的可配置产品的价格,现在我要返回并确保它考虑到可能存在的任何可配置属性。下面是通过ajax调用的,我已经将其调试到循环的最核心部分(因此所有magento方法都可以工作)。它应该删除与属性不匹配的子级。最终目标是只剩下一个孩子,并与价格相呼应。每个孩子确实包含一个独特的价格(这一点我知道)。你能明白为什么这现在不起作用吗?

  • 示范喷洒服务(路线): Redis执行元(Mock还没有实际的Redis客户端)

  • 昨天我在我的项目中添加了,现在当我离开并回到导航中的元素时,它会重新加载Sky,我得到 警告:儿童(…):遇到两个具有相同密钥的子项,。子密钥必须是唯一的;当两个子项共享密钥时,将只使用第一个子项。 (上面使用的数字50只是一个例子,它每次抛出这个错误~40次,都是不同的id) 这个问题似乎源于我的文件: 因为每次我进入另一个屏幕时,这个组件都会卸载,然后在我回来时重新安装。 当完成时,创建了一组

  • 我对gitlab ci子管道有问题。需要在具有多个应用程序的repo中的每次提交后自动触发ci管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道 结构示例 Main“.gitlab ci.yml”是: appA1".gitlab-ci.yml"是: appA2“.gitlab ci.yml”是: 这种配置的目的是,例如,当我在应用**中更改文件时,管道会检测到更改并生成应用