关于java:错误:此处不允许使用void类型

error: void type not allowed here

本问题已经有最佳答案,请猛点这里访问。

问:在一系列陈述中,将尼克账户中的所有资金 - 包括支票和储蓄 - 转移到卡罗尔的支票账户。这应该让尼克最后没有钱 - 即他的两个账户都有0钱。有几种方法可以实现。建议使用一个或多个中间变量来保存Nick的账户中的值,然后将该值存入Carol的支票账户。注意:您必须通过调用BankAccount类中定义的方法从Nick的帐户中获取值。使用BankAccount类中的相应方法打印出Nick和Carol帐户的检查和储蓄信息的报告。

一个。

公共类BankAccount {

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  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);
   }

}

  • 公共类BankingDriver {

  • public static void main(String [] args){

  • BankAccount nicksAcct = new BankAccount("Nick",450,550);

  • BankAccount carolsAcct = new BankAccount("Carol",600,700);

  • int nicksCheckingMoney = nicksAcct.getCheckMoney();

  • int nicksSaveMoney = nicksAcct.getSaveMoney();

  • int deposit =(nicksAcct.makeCheckingWithdrawal(nicksCheckingMoney)+ nicksAcct.makeSavingsWithdrawal(nicksSaveMoney));

  • carolsAcct.makeCheckingDeposit(存款);

  • nicksAcct.printReport();

  • carolsAcct.printReport();

    }
    }

  • BankDriver的第7行一直给我这里不允许的'void'类型错误。有人可以向我解释为什么会这样做吗?


    您不能将两个void方法的结果一起添加。 例如:

    1
    2
    3
    4
    5
    6
    private static void foo() {}
    private static void bar() {}

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

    希望这显然毫无意义。 实际上,您无法对void方法的结果执行任何操作:您只能调用该方法。

    如果要添加makeCheckingWithdrawalmakeSavingsWithdrawal方法的结果,则需要使它们返回数字类型,例如:

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

    您从这些方法返回的值取决于您的要求。