2012-09-26 70 views
1

我正在编写一个程序,用于跟踪随着时间的推移完成的不同事务 。我有一个主班,另一个班级名为 CheckingAccount.java从主类上的函数调用外部类对象

我有一个这样格式化的主类。

public class Main 
{ 
    public static void main (String[] args) 
    { 
     CheckingAccount c = new CheckingAccount(bal); 
     --line of code--- 
     --line of code--- 
     --line of code---   
    } 

    public static int getTransCode() 
    { 
     --line of code--- 
    } 
    public static double getTransAmt() 
    { 
     --line of code--- 
    } 
    public static void processCheck(double trAm, int tCode, boolean monthCh) 
    { 
     double curCharge=0.15; 

     CheckingAccount.setBalance(trAm,tCode,curCharge,monthCh); 
     CheckingAccount.setServiceCharge(curCharge); 
    } 
    public static void processDeposit(double trAm, int tCode, boolean monthCh) 
    { 
     double curCharge=0.10; 

     CheckingAccount.setBalance(trAm,tCode,curCharge,monthCh); 
     CheckingAccount.setServiceCharge(curCharge); 
    } 
} 

这是我CheckingAccount.java

public class CheckingAccount 
{ 
    private double balance; 
    private double totalServiceCharge; 

    public CheckingAccount(double initialBalance) 
    { 
     balance = initialBalance; 
     totalServiceCharge = totalServiceCharge; 
    } 

    public double getBalance() 
    { 
     return balance; 
    } 

    public void setBalance(double tAm, int Code, double charge, boolean mChrg) 
    { 
     if(tCode == 1) 
     balance = (balance - tAm) - charge; 
     else //if(tCode == 2) 
      balance = (balance + tAm) - charge; 
    } 

    public double getServiceCharge() 
    { 
     return totalServiceCharge; 
    } 

    public void setServiceCharge(double currentServiceCharge) 
    { 
     totalServiceCharge = totalServiceCharge+currentServiceCharge; 
    } 
} 

所以我不能去工作线CheckingAccount.setBalance()CheckingAccount.setServiceCharge()的功能里面我的主类。我想要做的是从我创建的函数(processCheckprocessDeposit)中调用我创建的方法(setBalancesetServiceCharge)。

但我不能让它运行,我一直运行这些错误消息。

非静态方法的setBalance(双,INT,双,布尔值)不能从静态上下文 CheckingAccount.setBalance引用(电车,TCODE,curCharge,monthCh);

回答

1

要调用你的setBalance通过类名称是错误的.... setBalance()方法是非静态的,所以它被定义为类的具体实例,而不是一类。

**CheckingAccount.setBalance(trAm,tCode,curCharge,monthCh); 
CheckingAccount.setServiceCharge(curCharge);** 

您需要创建的CheckingAccount一个实例调用的方法..

其次,在你constructorCheckingAccount类,你没有通过任何参数为totalService,但要设置一个具有未知变量.. 你会得到一个编译器错误有.. 要么你需要用一个固定值来初始化你totalServiceCharge或者,你可以把它作为主要的参数。而如下改变你的构造..

public CheckingAccount(double initialBalance, ** double totalServiceCharge) 
{ 
    balance = initialBalance; 
    this.totalServiceCharge = totalServiceCharge; 
} 

然后从主,这样称呼它: -

CheckingAccount ca = new CheckingAccount(bal, totalServiceCharge); 
+0

+1在totalService'好的地方,错过了:P – MadProgrammer

+0

谢谢,我感谢你的帮助。这工作完美。 –

0

其中一个可能的解决方案是:

你需要调用方法之前CheckingAccount创建对象。

实施例:

public static void processDeposit(double trAm, int tCode, boolean monthCh) 
    { 
     double curCharge=0.10; 
     CheckingAccount ca = new CheckingAccount();  
     ca.setBalance(trAm,tCode,curCharge,monthCh); 
     ca.setServiceCharge(curCharge);** 
    } 

另一种方式是,改变的setBalance方法静态方法。

public static void setBalance(double tAm, int Code, double charge, boolean mChrg) 
    { 
     if(tCode == 1) 
     balance = (balance - tAm) - charge; 
     else //if(tCode == 2) 
      balance = (balance + tAm) - charge; 
    } 

我认为第一种方法比第二种方法更有意义。

0

CheckingAccount.setBalanceCheckingAccount.setServiceCharge不是静态方法(在这种情况下,它们不应该是)。

您需要通过帐户的方法的参考...

public static void processCheck(CheckingAccount ca, double trAm, int tCode, boolean monthCh) 
{ 
    double curCharge=0.15; 

    ca.setBalance(trAm,tCode,curCharge,monthCh); 
    ca.setServiceCharge(curCharge);** 
} 

public static void processDeposit(CheckingAccount ca, double trAm, int tCode, boolean monthCh) 
{ 
    double curCharge=0.10; 

    ca.setBalance(trAm,tCode,curCharge,monthCh); 
    ca.setServiceCharge(curCharge); 
} 

的你就可以做这样的事情......

public static void main (String[] args) 
{ 
    CheckingAccount c = new CheckingAccount(bal); 
    processCheck(ca, 100.0, 1, false); 
}