在Java中,根据用户请求从数组中删除/读取特定的元素



有人能告诉我我的公共雇员deleteEmployeeID和我的公共雇员readdemployeeid 方法有什么问题吗?用户应该能够删除或读取有关他们请求的特定员工ID的更多信息。我似乎找不出我的两种方法有什么问题。

package WorkIDServerStorage;
public class EmployeeList{
    private Employee[] theEmployee;
    private int arrayEmployee;
    public EmployeeList(){
        theEmployee = new Employee[100];
        arrayEmployee = 0;
    }
    public EmployeeList(int arraySize){
        theEmployee = new Employee[arraySize];
        arrayEmployee = 0;
    }
    public void setTheEmployee(Employee[] inputTheEmployee){
        theEmployee = inputTheEmployee;
    }
    public void setArrayEmployee(int inputArrayEmployee){
        arrayEmployee = inputArrayEmployee;
    }
    public Employee[] getTheEmployee(){
        return theEmployee;
    }
    public int getArrayEmployee(){
        return arrayEmployee;
    }
    public Employee addEmployeeID(Employee employeeAdd){
        return theEmployee[arrayEmployee++] = employeeAdd;
    }
    public Employee deleteEmployeeID(int employeeDelete){        
        for(int i = employeeDelete + 1; i < theEmployee.length; i++){
            theEmployee[i-1] = theEmployee[i];
        }
        return null;
    }
    public Employee readEmployeeInfo(int employeeRead){
        return theEmployee[employeeRead];
    }
    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        for(int x = 0; x < arrayEmployee; x++){
            sb.append(theEmployee[x].toString()).append("n");
        }return sb.toString();
    }
}

主类

package WorkIDServerStorage;
import java.util.Scanner;
public class EmployeeListTest{
    public static void main(String[] args){
        EmployeeList EmployeeListObject = new EmployeeList();
        Scanner input = new Scanner(System.in);
        System.out.println("► Initiating Employee Information Server Storage ◄");
        System.out.println("► Type 'EXIT' at any moment to close the program ◄n");
        for(int x = 1; x < 6; x++){
            Employee EmployeeObject = new Employee("Employee " + x, 1234 + x, 15 + x);
            EmployeeListObject.addEmployeeID(EmployeeObject);
        }
        System.out.println(EmployeeListObject);
        System.out.print("nType 'ADD' to add a new employeen");
        System.out.print("Type 'DELETE' to delete an employee recordn");
        System.out.print("Type 'READ' to read the data of an employee ");
        String menuOption = input.next();
        if(menuOption.equalsIgnoreCase("EXIT")){
            EmployeeListObject.toString();
        }else if(menuOption.equalsIgnoreCase("ADD")){
            System.out.print("nInsert employee ID: ");
            String addEmployeeID = input.next();
            EmployeeListObject.addEmployeeID(addEmployeeID);
        }else if(menuOption.equalsIgnoreCase("DELETE")){
            System.out.print("nInsert employee ID: ");
            String deleteEmployeeID = input.next();
            EmployeeListObject.deleteEmployeeID(deleteEmployeeID);
        }else if(menuOption.equalsIgnoreCase("READ")){
            System.out.print("nInsert employee ID: ");
            String readEmployeeID = input.next();
            EmployeeListObject.readEmployeeInfo(readEmployeeID);
        }      
    }
}

我看到的主要问题,这可能是或可能不是你的问题的原因是在你的主类。观察一下,当用户请求读取数据时,实际上什么也没有打印到控制台。

EmployeeListObject.readEmployeeInfo(readEmployeeID);

调用

public Employee readEmployeeInfo(int employeeRead){
    return theEmployee[employeeRead];
}

它只返回一个Employee对象,但从不打印任何东西。因此,用户将永远无法读取员工数据。


代码中的另一个问题是@popiandro注释的内容。但是我不认为这是导致你的程序崩溃的原因。

public Employee deleteEmployeeID(int employeeDelete){        
    for(int i = employeeDelete + 1; i < theEmployee.length; i++){
        theEmployee[i-1] = theEmployee[i];
    }
    return null;
}

此方法将始终返回null,这样做没有意义。设置方法为"void"