有人能告诉我我的公共雇员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
"