1
package bankAccount;

public class CurrentAccount {

        int account[];
        int lastMove;
        int startingBalance = 1000;

        CurrentAccount() {
            lastMove = 0;
            account = new int[10];
        }

        public void deposit(int value) {
            account[lastMove] = value;
            lastMove++;
        }

        public void draw(int value) {
            account[lastMove] = value;
            lastMove++;
        }

    public int settlement() {
           int result = 0;
           for (int i=0; i<account.length; i++) {
                  result = result + account[i] + startingBalance;

                  System.out.println("Result = " + result);

           }

           return result;

    }

    public static void main(String args[]) {
                 CurrentAccount c = new CurrentAccount();
                  c.deposit(10);



        }
    }

現時点では、クラスを実行すると、期待される System.out.println が表示されず、単純に public static void main(String[] args) を先頭に移動すると、複数の赤い点が生成されます。期待どおりに動作するようにコードをリファクタリングするための最良の方法は何ですか?

4

5 に答える 5

1

あなたは決して決済方法を呼び出しませんでした...

public static void main(String args[]) {
    CurrentAccount c = new CurrentAccount();
    c.deposit(10);
    c.settlement();
}

C や PHP などの非 OOP 言語から来ているように感じます。だからいくつかの説明:

  • メソッドは静的です。mainつまり、オブジェクト インスタンスが作成されていない場合でも「存在する」ことを意味し、クラス インスタンスに属しているかのように考えることができます。
    • それどころか、他のメソッドが「機能する」には、インスタンスが必要です。
  • このようにして、mainメソッドをアプリケーションのエントリ ポイントとして使用できます (そして実際に使用されます)。
  • 実行され、存在する場合 (他のスレッドが実行されていない場合)、アプリケーションは終了します。
  • そのため、このメソッドの外部で単独で実行されるものは他にありません...
    • あなたが電話しなければ、c.settlement();それは起こりません...

その他の注意事項:

  • 実行mainは、囲んでいるクラスのインスタンスを作成しません
  • new CurrentAccount()使用して、オブジェクト インスタンスを作成します。このインスタンスには状態が保存され、操作できます。
  • 配列には注意してください。面倒をみる必要があり、不便な場合があります...
于 2013-03-06T11:20:01.633 に答える
1

Main.java ファイルに Main と呼ばれる別のクラスを含めることができます。

 public static void main(String args[])

そして電話する

 c.settlement(); 

main() で印刷します。

また、もう1つのアドバイス、コンストラクターには

account = new int[10];

10 秒しか保持できませintん。

あなたの預金()とドロー()では、accountサイズをチェックしていません。の値がlastMove10 を超えると、コード全体が爆発します。

したがって、ArrayListを使用することをお勧めします

于 2013-03-06T11:19:00.790 に答える
0

印刷された出力が表示されることを期待するのはなぜですか? 実際に決済メソッドを呼び出すわけではないので、そのコマンドは実行されません。

于 2013-03-06T11:20:13.320 に答える
0

deposit()呼び出すまでsettlement()メイン メソッドを呼び出しておらず、期待される出力を取得できません。

于 2013-03-06T11:36:52.553 に答える
0

あなたは決済を呼び出さなかった..ので、何も表示されません

c.settlement... を追加すれば大丈夫です..

于 2013-03-06T11:24:39.450 に答える