首页 > 解决方案 > 扩展类对象java的ID自动递增

问题描述

有问题,我的 ID 自动递增代码不起作用。对象的 ID 始终为 0。也许有人可以帮我解决这个问题。尝试了不同的方法,但仍然不适合我。对于我的情况,我应该使用 Employee 类作为 ID 计数器。但我不确定我做的是否正确。

超类

public class Person {
    public String PersonName;
    public String PersonSurname;

    public Person()
    {
        this.PersonName = "";
        this.PersonSurname = "";
    }
    public Person(String PersonName, String PersonSurname)
    {
        this.PersonName = PersonName;
        this.PersonSurname = PersonSurname;
    }
    @Override
    public String toString()
    {
        return "Person name, surname: "+ this.PersonName + " " + this.PersonSurname;
    }

    public void setPersonName(String PersonName)
    {
        this.PersonName = PersonName;
    }
    public void setPersonSurname(String PersonSurname)
    {
        this.PersonSurname = PersonSurname;
    }

    public String getPersonName()
    {
        return PersonName;
    }
    public String getPersonSurname()
    {
        return PersonSurname;
    }

带身份证的班级

public class Employee extends Person {
    private int EmployeeID;
    private static int IdCounter = 0;

    public Employee(){
        super("","");
        EmployeeID = 0;
        this.EmployeeID = IdCounter++;
    }

    public Employee(int EmployeeID, String PersonName, String PersonSurname){
        super(PersonName,PersonSurname);
        this.EmployeeID = IdCounter++;
    }
    @Override
    public String toString()
    {
        return "Person name, surname: " +this.EmployeeID + ". " + this.PersonName + " " + this.PersonSurname;
    }

    public void setEmployeeID(int EmployeeID)
    {
        this.EmployeeID = EmployeeID;
    }

    public int getEmployeeID()
    {
        return EmployeeID;
    }

}

我的主要课程

public class Main {

    public static void main(String[] rez) {
        Scanner scanner = new Scanner(System.in);
        String firstDigit = "";
        String secDigit = "";
        Employee CompanyEmployee = new Employee();

        do {

            System.out.println("Please input Name: ");
            firstDigit = scanner.nextLine();

            System.out.println("Please input Surname: ");
            secDigit = scanner.nextLine();

            CompanyEmployee.setPersonName(firstDigit);
            CompanyEmployee.setPersonSurname(secDigit);

            System.out.println(CompanyEmployee);
        }
        while (!firstDigit.equals("dasd"));

标签: javaclassextends

解决方案


请更新您的代码,如下所示

public class Main {

    public static void main(String[] rez) {
        Scanner scanner = new Scanner(System.in);
        String firstDigit = "";
        String secDigit = "";
        List<Employee> listofemployee = new ArrayList<>();
       
        do {

            Employee companyEmployee = new Employee();

            System.out.println("Please input Name: ");
            firstDigit = scanner.nextLine();

            System.out.println("Please input Surname: ");
            secDigit = scanner.nextLine();

            companyEmployee.setPersonName(firstDigit);
            companyEmployee.setPersonSurname(secDigit);

            System.out.println(companyEmployee);
            listofemployee.add(companyEmployee);
        }
        while (!firstDigit.equals("dasd"));

推荐阅读