Java在类函数中计算

时间:2014-05-11 13:34:20

标签: java

我有问题,void函数中的值不会计算:( 任务是,使用插入的数量和插入的价格计算发票金额。插入和显示价格和数量没有问题,问题在于计算发票金额。

这是测试类:

    import java.util.Scanner;

public class invoicetest {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        invoice newinvoice = new invoice();

        System.out.println("Please input the quantity:");
        newinvoice.setQuantity (input.nextInt());
        System.out.println("Please input the price:");
        newinvoice.setPrice (input.nextDouble());
        newinvoice.displayMessage();    
    }

}

以下是发票类:

public class invoice {
    private int quantity;
    private double price, amount;
    public double invoiceamount;

    public int getQuantity () {
        return quantity;
    }

    public double getPrice () {
        return price;
    }

    public void setQuantity (int i) {
        quantity = i;
    }

    public void setPrice (double i) {
        price = i;
    }

    public double getInvoiceAmount () {

        amount = quantity*price;

        return amount;
    }

    public void setInvoiceAmount (double i) {
        invoiceamount = i;
    }

    public void displayMessage() {
        System.out.println(quantity);
        System.out.println(price);
        System.out.println(invoiceamount);
    }
}

我的问题是,变量是常数0.我是java的新手,我不会遇到问题。 我认为虚空InvoiceAmount的数量和价格是否可用?我如何获得它们,所以其他功能可以使用它?

1 个答案:

答案 0 :(得分:0)

您永远不会在任何地方设置invoiceAmount。

public double getInvoiceAmount () {

    amount = quantity*price;

    return amount;
}

所以只需使用setInvoiceAmount获得的结果来调用getInvoiceAmount()

public void setInvoiceAmount (double i) {
    invoiceamount = i;
}

所以在你的invoiceTest课程中,在尝试打印值之前添加它:

double amount = newInvoice.getInvoiceAmount();
newInvoice.setInvoiceAmount(amount);

另外,请尊重java命名约定,使用camelCase。其他人很难阅读你的代码。

调试此类问题的一种有用技巧是添加print语句来跟踪变量。从设置变量的第一个地方开始,每次更改变量时,添加一个print语句以查看它是如何变化的。最终你会发现它出错的地方。