扩展 class 对象 java 的 ID 自动递增
ID auto increment for extended class object java
遇到问题,我的 ID 自动递增代码不起作用。对象的 ID 始终为 0。
也许有人可以帮我解决这个问题。尝试了不同的方式,但仍然不适合我。
对于我的情况,我应该使用 Employee class 作为 ID 计数器。但我不确定我做的是否正确。
超级class
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;
}
class id counter
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;
}
}
我的主要class
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"));
请像下面这样更新您的代码
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"));
我想您不需要那个 EmployeeID 变量。
public class Employee extends Person {
private static int id = 0; //renamed your IdCounter variable to just id
public Employee(){
super("","");
id++; //will increment every time you construct an object
}
public Employee(int EmployeeID, String PersonName, String PersonSurname){
super(PersonName,PersonSurname);
id++; //will increment every time you construct an object
}
public getId(){
return id;
}
我建议您使用随机化器为您的对象指定一个 id,因为如果您 运行 再次编程,id 字段将变为 0,并且新对象将获得与之前对象相同的 id
遇到问题,我的 ID 自动递增代码不起作用。对象的 ID 始终为 0。 也许有人可以帮我解决这个问题。尝试了不同的方式,但仍然不适合我。 对于我的情况,我应该使用 Employee class 作为 ID 计数器。但我不确定我做的是否正确。
超级class
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;
}
class id counter
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;
}
}
我的主要class
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"));
请像下面这样更新您的代码
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"));
我想您不需要那个 EmployeeID 变量。
public class Employee extends Person {
private static int id = 0; //renamed your IdCounter variable to just id
public Employee(){
super("","");
id++; //will increment every time you construct an object
}
public Employee(int EmployeeID, String PersonName, String PersonSurname){
super(PersonName,PersonSurname);
id++; //will increment every time you construct an object
}
public getId(){
return id;
}
我建议您使用随机化器为您的对象指定一个 id,因为如果您 运行 再次编程,id 字段将变为 0,并且新对象将获得与之前对象相同的 id