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

您可以在文件 Main.java 中有另一个名为 Main 的类,您可以在其中编写您的

 public static void main(String args[])

并打电话

 c.settlement(); 

在你的 main() 中打印。

还有一个建议,在你的构造函数中,你有

account = new int[10];

只能保持 10int秒。

在您的 deposit() 和 draw() 中,您没有检查account大小。当 的值lastMove大于 10 时,整个代码就会爆炸。

因此我建议你使用ArrayList

于 2013-03-06T11:19:00.790 回答
1

你从来没有调用过结算方法...

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

我感觉您来自某种非 OOP 语言,例如 C 或 PHP。所以一些解释:

  • main方法是静态的:这意味着即使没有创建对象实例,它也“存在”,可以认为它好像属于类实例。
    • 相反,要让其他方法“工作”,则需要一个实例。
  • 这样,该main方法可以(并且实际上)用作应用程序的入口点
  • 它被执行,当它存在时,(如果没有其他线程在运行)应用程序终止。
  • 因此,仅在此方法之外没有其他任何东西运行......
    • 所以如果你不打电话c.settlement();- 它不会发生......

其他注意事项:

  • 运行main不会创建封闭类的实例
  • 使用new CurrentAccount(),您创建一个对象实例,该实例具有它存储的状态,并且可以被操作
  • 小心阵列,它们必须得到照顾,这有时会带来不便......
于 2013-03-06T11:20:01.633 回答
0

为什么您希望打印输出出现?您实际上并没有调用结算方法,因此不会执行该命令。

于 2013-03-06T11:20:13.320 回答
0

你没有打电话给结算..所以什么都没有出现

如果您添加 c.settlement... 很好..

于 2013-03-06T11:24:39.450 回答
0

在您调用之前,您还没有调用deposit()并且settlement()在 main 方法中,您无法获得预期的输出。

于 2013-03-06T11:36:52.553 回答