【问题标题】:Array of Class Operator Error: unexpected type required: variable found: value类运算符错误的数组:需要意外类型:找到变量:值
【发布时间】:2019-09-16 01:29:48
【问题描述】:

我有一个 BankAccount 类和嵌套类的数组,包括带有方法 getAcctBalance() 的 AccountInfoPrv。错误发生在最后一行,我调用 BankAccount 方法 getAccountInfoPrv(),然后该方法进入 AccountInfoPrv 类调用 getAcctBalance()。它返回索引 i 处的任何值,我已经在 main 方法中没有运算符的情况下对此进行了测试,它完美地返回了该值。我不确定我在这里做错了什么。

此外,此方法还涉及许多其他代码,但我尝试仅使用此 for 循环来简化它。

  public static void withdrawal(Scanner kybd, BankAccount[] 
  account, int num_accts)
 {

 double amountToWithdraw;
 amountToWithdraw = kybd.nextDouble();

 for(int i=0; i<num_accts; i++)
 account[i].getAccountInfoPrv().getAcctBalance() -= 
 amountToWithdraw;
 }

预期从 account[i] 的值中减去提款金额并将 account[i] 设置为新值。

输出:错误:意外类型 必需:变量 找到:值

【问题讨论】:

    标签: java


    【解决方案1】:

    您在这里尝试做的是修改getter 方法返回的“值”。为了对getter 方法返回的值执行任何此类操作,您需要

    1. 首先需要把它存入一个变量中,
    2. 并修改其值,
    3. 然后调用setter在对象中设置更新的值。

    balance = account[i].getAccountInfoPrv().getAcctBalance();
    balance -= amountToWithdraw;
    account[i].getAccountInfoPrv().setAcctBalance(balance);
    

    在非原始类型的情况下,不需要显式调用 setter,因为它将通过引用进行更新。

    【讨论】:

    • 感谢 Ankur 的详细解释,成功了!
    【解决方案2】:

    在这里你尝试从一个getter(方法)改变它是不允许的。 试试

    account[i].getAccountInfoPrv().setAcctBalance(account[i].getAccountInfoPrv().getAcctBalance() - amountToWithdraw);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多