为什么这不是创造一个对象?

时间:2011-04-11 16:11:56

标签: java

有人可以看一下我试图取消和关闭帐户的代码部分吗?这就是我想要实现的目标:

  

“2。向您的Account类添加一个方法void close()。此方法应通过将”CLOSED“附加到帐户名并将余额设置为0来关闭当前帐户。(帐号应保持不变。)还减少了帐户总数。“

当我尝试编译它时,程序给了我一个关于预期标识符的错误。我错过了什么?

//*******************************************************/
// Account.java
//
// A bank account class with methods to deposit to, withdraw from,
// change the name on, and get a String representation
// of the account.
//*******************************************************/

public class Account
{
  private double balance;
  private String name;
  private long acctNum;

  //----------------------------------------------
  //Constructor -- initializes balance, owner, and account number
  //----------------------------------------------
  public Account(double initBal, String owner, long number)
  {
    balance = initBal;
    name = owner;
    acctNum = number;
  }

  //----------------------------------------------
  // Checks to see if balance is sufficient for withdrawal.
  // If so, decrements balance by amount; if not, prints message.
  //----------------------------------------------
  public void withdraw(double amount)
  {
    if (balance >= amount)
       balance -= amount;
    else
       System.out.println("Insufficient funds");
  }
//----------------
//Track how many accounts
//----------------
    private static int numAccounts=0;
    {
        numAccounts++;
        }
    public static int getNumAccounts()
    {
        return numAccounts;
        }

  //----------------------------------------------
  // Adds deposit amount to balance.
  //----------------------------------------------
  public void deposit(double amount)
  {
    balance += amount;
  }

  //----------------------------------------------
  // Returns balance.
  //----------------------------------------------
  public double getBalance()
  {
    return balance;
  }

    //----------------------------------------------
  // Returns account number.
  //----------------------------------------------

  public long getAcctNumber()
  {
    return acctNum;
  }

//----------------
//Void and close the accounts
//----------------

public void close(Account)
{
    balance = 0;
    name = "CLOSE";
    acctNum = number;
    numAccounts--;
     return Account;
     }


  //----------------------------------------------
  // Returns a string containing the name, account number, and balance.
  //----------------------------------------------
  public String toString()
  {
    return "Name: " + name + 
"\nAccount Number: " + acctNum +
"\nBalance: " + balance; 
  }
}

9 个答案:

答案 0 :(得分:6)

public void close(Account)需要变量名称。声明说它需要一个Account参数,但您还需要为参数指定一个名称,例如public void close(Account account)

请注意,我认为这没有多大意义。给定一个帐户对象,您应该可以关闭它,所以也许您应该重新考虑该参数是否有意义。

答案 1 :(得分:3)

几乎没有问题:

public void close(Account) << why do you have Account as a parameter (half parameter)?
{
    balance = 0;
    name = "CLOSE";     << This is assignment, not addition
    acctNum = number;   << where number came from
     acctNum--;
     return Account;    << this is a void method, why do you return something?
}

看起来应该是这样的:

public void close()
{
    balance = 0;
    name += "CLOSE";     << adding "close" to current account name
     acctNum--;
}

另一方面,acctNum是帐户的总数,它不应该与特定对象相关,因此应该声明为静态。

修改

有关帐户计数和帐号的说明:

对于每个帐户,都应该有一个帐号,假设第一个帐户有account number = 1,第二个帐户有account number = 2等,所以我们会调用此变量accountNumber和将其声明为私有变量:

private int accountNumber;

您还想跟踪活动帐户的数量,对吧?因此,您创建另一个不受特定帐户限制但与所有帐户相关的变量,并将其命名为accountCount,您应该将其声明为静态变量:

private static int accountCount = 0;

当您关闭帐户时,您希望减少帐号并保留计数,因此您的方法应如下所示:

public void close()
{
    balance = 0;
    name += "CLOSE";     
    accountCount--;  << we decrease the account count, not the specific account number
}

答案 2 :(得分:2)

最好去 public void close() { ... }

你将在帐户类的实例(如myAccount.close())上调用它,因此它将自行处理。添加你不需要的东西几乎总是一个坏主意:)

答案 3 :(得分:1)

您没有指定参数名称。

将其更改为

public void close(Account acct){
  //...
}

答案 4 :(得分:1)

public void close() {
    ...
}

我认为他们期望你添加一个带有该签名的方法。 此外,它表示将“CLOSED”附加到名称而不是将“设置”名称为“CLOSED”。 我认为您不需要使用acctNum变量修改任何内容。

应该有足够的提示来完成这个。

答案 5 :(得分:0)

public void close(Account)

应该有一个变量名。像这样:

public void close(Account account)
{
    balance = 0;
    name = "CLOSE";
    acctNum = number;
    acctNum--;
}

答案 6 :(得分:0)

这一行必须在一个方法内,而不是你的类声明的一部分:

{        
     numAccounts++;
} 

尝试制作:

public void incrementAccountNumber() {
     numAccounts++;
}

答案 7 :(得分:0)

您需要为close()方法指定参数名称:

public void close(Account account) { ... }

答案 8 :(得分:0)

除了其他答案之外,您还有一个未知变量number

 acctNum = number;