ошибка: тип void здесь не разрешен

В. В серии заявлений переведите все деньги со счетов Ника — как текущие, так и сберегательные — на текущий счет Кэрол. Это должно оставить Ника без денег в конце, то есть на обоих его счетах 0 денег. Этого можно добиться несколькими способами. Предлагается использовать одну или несколько промежуточных переменных для хранения значений со счета Ника, а затем внести это значение на расчетный счет Кэрол. Примечание. Вы должны получить значения из счета Ника, вызвав методы, определенные в классе BankAccount. Распечатайте отчет о проверке и сбережениях по счетам Ника и Кэрол, используя соответствующий метод в классе BankAccount.

A.

открытый класс BankAccount{

  private String name;
  private int checkMoney;
  private int saveMoney;

   public BankAccount(String who, int checking, int saving){
     name = who;
     checkMoney = checking;
     saveMoney = saving;
  }

   public String getAccountName(){
     return name;
   }

   public int getCheckMoney(){
     return checkMoney;
   }

   public int getSaveMoney(){
     return saveMoney;
   }

   public void makeCheckingDeposit(int amt){
       checkMoney = checkMoney + amt;
   }

   public void makeSavingsDeposit(int amt){
     saveMoney = saveMoney + amt;
   }

   public void makeCheckingWithdrawal(int amt){
    if(checkMoney >= amt)
     checkMoney = checkMoney - amt;
   }

   public void makeSavingsWithdrawal(int amt){
    if(saveMoney >= amt)
     saveMoney = saveMoney - amt;
   }

   //prints name and both account balances to the console
   public void printReport() {
     System.out.println(name + " checking: " + checkMoney + " savings: " + saveMoney);
   }

}

  1. открытый класс BankingDriver {

  2. public static void main (String [] args) {

  3. BankAccount nicksAcct = new BankAccount("Ник", 450, 550);

  4. BankAccount carolsAcct = new BankAccount("Кэрол", 600, 700);

  5. int nicksCheckingMoney = nicksAcct.getCheckMoney();

  6. int nicksSaveMoney = nicksAcct.getSaveMoney();

  7. int Deposit = (nicksAcct.makeCheckingWithdrawal(nicksCheckingMoney) + nicksAcct.makeSavingsWithdrawal(nicksSaveMoney));

  8. carolsAcct.makeCheckingDeposit(депозит);

  9. nicksAcct.printReport();

  10. carolsAcct.printReport();

    } }

Строка 7 BankDriver продолжает выдавать мне ошибку типа «пустой», не разрешенную здесь. Может ли кто-нибудь объяснить мне, почему он это делает?


person Subhan    schedule 22.12.2015    source источник
comment
makeCheckingWithdrawal и makeSavingsWithdrawal не возвращают значения, которые можно сложить вместе: это void методы.   -  person Andy Turner    schedule 22.12.2015


Ответы (1)


Вы не можете сложить результаты двух методов void вместе. Например:

private static void foo() {}
private static void bar() {}

public static void main(String... args) {
  System.out.println(foo() + bar());
}

Надеюсь, это явно бессмысленно. На самом деле, вы ничего не можете сделать с результатом void методов: вы можете только вызвать метод.

Если вы хотите добавить результаты методов makeCheckingWithdrawal и makeSavingsWithdrawal, вам нужно будет заставить их возвращать числовой тип, например:

public int makeCheckingWithdrawal(int amt) { ... }
public int makeSavingsWithdrawal(int amt) { ... }

Значение, которое вы возвращаете из этих методов, зависит от вас, в зависимости от ваших требований.

person Andy Turner    schedule 22.12.2015
comment
Я понимаю, что вы сказали, но как, по-вашему, мне следует решить эту проблему? - person Subhan; 22.12.2015