我有问题,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的数量和价格是否可用?我如何获得它们,所以其他功能可以使用它?
答案 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语句以查看它是如何变化的。最终你会发现它出错的地方。