java - 每次实例化一个新成员时,如何在java类中增加一个字段成员

标签 java

对 Java 非常陌生,所以我现在感觉自己像个 child 。我猜是学习一门新语言的乐趣。

这是我的发票类:

public class Invoice {
//member inits
private int numberOfInvoices = 0;
private String companyName;
private double amountDue;
private String chargeDate;
private static int invoiceNumber = 0;


//constructor
public Invoice(String _companyName, double _amountDue, String _chargeDate)
{
    numberOfInvoices++;
    companyName = _companyName;
    amountDue = _amountDue;
    chargeDate = _chargeDate;
    invoiceNumber = numberOfInvoices;
}

//getters
public String getCompanyName()
{
    return companyName;
}

public double getAmountDue()
{
    return amountDue;
}

public String getChargeDate()
{
    return chargeDate;
}

public int getInvoiceNumber()
{
    invoiceNumber = numberOfInvoices + 1;
    return invoiceNumber;
}

//setters
public void setCompanyName(String _companyName)
{
    companyName = _companyName;
}

public void setAmountDue(double _amountDue)
{
    amountDue = _amountDue;
}

public void setChargeDate(String _chargeDate)
{
    chargeDate = _chargeDate;
}
//helpers
public int incrementInvoices()
{
    return numberOfInvoices++;
}
}

这里是我尝试创建其中三个发票的主要方法,但每次创建新发票时都会增加发票编号。

public class InvoiceCreator {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Invoice invoice1 = new Invoice("Amazing Software", 5000.00, "January 18, 2009");
    System.out.println(invoice1);

    Invoice invoice2 = new Invoice("Best Programs", 4000.00, "February 18, 2009");
    System.out.println(invoice2);

    Invoice invoice3 = new Invoice("Champion Code", 3000.00, "March 18, 2009");
    System.out.println(invoice3);
}
}

我也是 IDE (netbeans) 的新手,但通过调试和查看我创建的每个类,所有字段都被正确初始化,但每个字段的 invoiceNumber = 1。

我在这里做错了什么?

最佳答案

您需要使用静态字段来生成增量发票编号,而不是存储单个发票编号。

试试这个:

public class Invoice {
//member inits
private static int nextInvoiceNumber = 0;
private String companyName;
private double amountDue;
private String chargeDate;
private int invoiceNumber = 0;


//constructor
public Invoice(String _companyName, double _amountDue, String _chargeDate)
{
    invoiceNumber = nextInvoiceNumber;
    nextInvoiceNumber++;
    companyName = _companyName;
    amountDue = _amountDue;
    chargeDate = _chargeDate;

}
....

关于java - 每次实例化一个新成员时,如何在java类中增加一个字段成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16716646/

相关文章:

java - 在java正则表达式中使用与数字相邻的反向引用

java - 使用 tomcat 服务器编辑已部署的应用程序

java - 很难在我的代码中找到错误

java - 在 App 层之间传递 Joda Time 对象

java - 在 Ubuntu 上安装 Java 8

java - JButtons 没有正确显示 borderlayout,还有向按钮添加 actionListener 的问题

java - 使用 Hibernate envers 查找最近删除的实体

java - 为什么 Maven 生成具有 5 个参数而不是 wsdl 参数的方法?

java - 如何将 ActionListener 添加到模态 JDialog?

java - 为什么要使用 Hadoop?