Java 方法没有得到正确的值,

Java Method not getting correct Value,

我正在尝试一个程序想法,因此有很多方法 类,这很可能是方法,但是在我的 CF 方法中(不要担心它们被更改为的命名约定post 在线)但是,当我尝试将 cF 设置为 cF=getTi-getTe 时,吸气剂的值总是打印 0 但这仅在计算 cF 方法中。如果我单独在 main 方法中打印 getter 和 setter,它们会打印出正确的数字。

public class CF {

    private double cF;

    Income rI= new Income();

    Expenses e = new Expenses();


    public double getCF() {
        return cF;
    }

        public void setCF(double cF) {
        this.cF = cF;
    }

    public CF(){
    //cF=0;
    }
    public double calculateCF(){



       cF= rI.getTi()-e.getTe();// this line will return 0 no matter what

        return cF;
    }
}

public class Expenses {

    private double tExpenses,exp1,exp2;
    public Expenses(){

    tExpenses=exp1=exp2=0;



    }
    public double calculateTotalExpenses(){

        tExpenses=exp1+exp2;

        return tExpenses;
    }




    /**
     * @return the tExpenses
     */
    public double getTe() {// again don't worry about naming conventions //they are correct in the IDE
        return tExpenses;
    }

    /**
     * @param tExpenses the tExpenses to set
     */
    public void setTe(double tExpenses) {
        this.tExpenses = tExpenses;
    }
}

public class RI {

    private double rI;

    private double incomeMisc;

    private double tIncome;

    public RI(){
    rI=0;
    incomeMisc=0;
    tIncome=0;
    }

    public double calculateRI(){

        tIncome= rI+incomeMisc;

    return tIncome;
    }


    /**
     * @return the incomeMisc
     */
    public double getIncomeMisc() {
        return incomeMisc;
    }

    /**
     * @param incomeMisc the incomeMisc to set
     */
    public void setIncomeMisc(double incomeMisc) {
        this.incomeMisc = incomeMisc;
    }

    /**
     * @return the tIncome
     */
    public double gettIncome() {
        return tIncome;
    }

    /**
     * @param tIncome the tIncome to set
     */
    public void settIncome(double tIncome) {
        this.tIncome = tIncome;
    }


}
public class FSAProgram {


    public static void main(String[] args) {
        RI rI = new RI();
        Expenses e = new Expenses();
        CF cF= new CF();

        System.out.println("Enter RI");
        Scanner k = new Scanner(System.in);
        rI.I(k.nextDouble());
        System.out.println("Enter Misc Income");
        rI.setIncomeMisc(k.nextDouble());
        rI.calculateRI();
        System.out.println("Total Income is: "+ rI.getTi());

        System.out.println("Enter expense");
        e.setExp1(k.nextDouble());// I know this isn't correct its because // I changed the name to post this question
        e.calculateTotalExpenses();
        System.out.println("Total Expenses :"+ e.gettExpenses());
        //cF.calculateCF();
        System.out.println(""+(e.gettExpenses() +" "+  rI.gettIncome()));

// Prints fine when last statement is executed
//The next statement is what returns 0 unfortunately

        System.out.println("CF: "+ cF.calculateCF());


    }

}

示例输出 **输入注册机

2000

输入杂项收入

0

总收入为:2000.0

Enter Exp1//这些是实际程序中其他东西的组合 900

总费用:900.0

900 2000

CF 0.0

你只是新建了两个对象,没有设置它的值,确定是returns0.

Income rI= new Income();

Expenses e = new Expenses();

为了使其可行,这里有一些提示:

//in your main
CF cF= new CF(rI, e);

//in your cf
private double cF;

private Income income;

private Expenses expense;

public CF(Income rI, Expense e){
    this.income = rI;
    this.expense = e;
}