0

ステートメントの文字列表現を返すには、抽象メソッドステートメント(スーパー クラス内) を実装する必要があります。

だから私は次のことをしました:

 public abstract String statement(); //The abstract method in my super class

..そして私のサブクラスのメソッド:

//@Override
public String statement() 
{
    return String.format("Account no %d has balance R%d and minimum balance R%d", accountNumber,balance,getMinBalance());
}

私のメイン クラスは、次のようにAccountクラス (問題のスーパー クラス) を呼び出すだけです。

new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]); //ao being the array which contains the values.

ただし、コンソールは何も表示せずに終了するだけです (私も実装に慣れていません)。

完全なコードは次のとおりです。

主要:

public class AccountList 
{
    public static void main(String[] args) 
    {
        int[] ao = {00000,0,0,12345,500,250,23456,230,-50,34567,340,500,45678,-320,-50,56789,-320,-500};

        for(int i=0;i<ao.length;i=i+3)
        {
            int a = i+2;
            if(ao[a]>=0)
            {

                new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);
            }
            if(ao[a]<=0)
            {

                new ChequeAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);
            }   
        }
    }
}

スーパークラス:

public abstract class Account implements InterestAccount
{
    static String accountNumber;
    int balance;

    public Account()
    {
        accountNumber = "00000";
        balance = 0;
        //statement();
    }
    public Account(String accountNumber,int balance)
    {
        setAccountNum(accountNumber);
        setBalance(balance);
    }
    public void setAccountNum(String accNum)
    {
        accountNumber = accNum;
    }
    public void setBalance(int balance)
    {
        this.balance = balance;
    }
    public String getAccountNumber()
    {
        return accountNumber;
    }
    public int getBalance()
    {
        return balance;
    }
     public abstract String statement();
}

サブクラスの 1 つ:

public class SavingsAccount extends Account
{
    int minBalance;

    public SavingsAccount()
    {
        super();
        minBalance = 0;
    }
    public SavingsAccount(String accountNum,int minBalance,int balance)
    {
        super(accountNum,balance);
        setMinBalance(minBalance);
    }
    public void setMinBalance(int minBalance)
    {
        this.minBalance = minBalance;
    }
    public int getMinBalance()
    {
        return minBalance;
    }
    @Override
    public int calculateInterest(int value) {

        if(minBalance>balance)
        {
            return 0;           
        }
        else
        {
            return (minBalance*balance)/100;
        }
    }
    //@Override
    public String statement() 
    {
        return String.format("Account no %d has balance R%d and minimum balance R%d", accountNumber,balance,getMinBalance());
    }

}
4

2 に答える 2

1

method ステートメントを呼び出すことはありません。

1) 新しい SavingsAccount オブジェクトを作成する

new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);

2)コンストラクタークラスは上記のステートメントで呼び出されました

public SavingsAccount(String accountNum,int minBalance,int balance)
{
    super(accountNum,balance);
    setMinBalance(minBalance);
}

3) 次に、サブクラスでスーパークラス メソッドを呼び出します public Account(String accountNumber,int balance) { setAccountNum(accountNumber); setBalance(バランス); }

4) SetBalance が呼び出されます

public void setBalance(int balance)
{
    this.balance = balance;
}

5) setMinBalance が呼び出されました

public void setMinBalance(int minBalance)
{
    this.minBalance = minBalance;
}

6) オブジェクト SavingsAccount の作成の終了

メソッドステートメントを呼び出す単一のステートメントはありません

于 2013-06-05T09:48:58.560 に答える
0

あなたのコードをもっと知っていると役立つかもしれませんが、私が見たところ、いくつかのケースが考えられます:

  • コードが実行され、エラーなしで終了します。何も表示されない理由は、標準出力ストリームに何も書き込まれていないためです (たとえば、System.out.println() を介して)。
  • コードにはいくつかの内部問題があり、例外が発生しますが、これもログ メカニズムが壊れているために表示されません。

いずれにしても、デバッガーを使用してコードをステップ実行し、どの部分が完全に動作し、失敗するかどうかを判断します。いくつかのローカル変数を抽出し、意味のある適切な名前を付けて、実行中にその内容を監視すると役立つ場合があります。

于 2013-06-04T14:24:57.713 に答える