首页 > 解决方案 > 如何修复此代码以满足要求?

问题描述

我的代码

主要的:

public class MainProg {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        bank acc = new bank();

        acc.acc1 = 1123.979;
        acc.acc2 = 543.758;

        System.out.println("account1 balance: " + "$" + acc.acc1);
        System.out.println("account2 balance: " + "$" + acc.acc2);

        System.out.println();

        System.out.print("Enter amount for account1: ");
        acc.WAmount1 = input.nextInt();;
        System.out.println();
        System.out.println("Subtracting " + acc.WA1 + " from account1 balance");
        acc.debit();

        System.out.println();

        System.out.print("Enter amount for account2: ");
        acc.WAmount2 = input.nextInt();

        System.out.println();

        System.out.println("Subtracting " + acc.WA2 + " from account2 balance");

        acc.Debit();
    }
}

我测试了代码,它工作得很好。问题出在代码上,我认为指令说我只能在Account类中提供 1 个方法,即wdraw

标签: javaobjectoopmethods

解决方案


一个 Account 类应该只包含一个金额字段。如果您有多个帐户,您将创建同一类的新实例,因此每个实例都保存一个帐户和一个帐户的信息。

提款方法应以提款金额为参数,因为提款金额不是账户的固有部分,而是与一次提款操作相关的临时值

所以像

public class Account {
  double amount;

  public void withdraw(double withdrawal){
     if (amount - withdrawal< 0){
        System.out.println("the debit amount exceeded the account balance");
     } else { 
         amount-=withdrawal;
     }
     System.out.println("account balance: $" + amount);
  }
}

如果可能(足够的资金),不要忘记通过提款来减少金额。

然后您可以实例化多个帐户:

Account account1=new Account();
// set amount and do withdrawals on account1

Account account2=new Account();
// set amount and do withdrawals on account2

推荐阅读