我的删除方法似乎不起作用,因为当用户尝试输入员工姓名时应用程序无法删除员工。应该发生的情况如下:
- 用户使用我编写的名为 userInputByName 的方法输入员工的姓名。
- 应用程序会在商店中搜索该员工。
- 该员工已被删除。
当我打印出员工仍然在那里的商店时,步骤 3 不起作用。
我现在将向您展示我的代码。
MainApp()
//---------------------------------------------------------------------------------------
// Name: Case 3: Delete by Name.
// Description: Choice 3 gives the user an option to delete an employee by name.
//---------------------------------------------------------------------------------------
case 3:
System.out.println("Delete by Name.");
Employee employeeDelete = MenuMethods.userInputByName();
Store.searchByName(employeeDelete.getEmployeeName());
System.out.println("Your choice is: "+ employeeDelete);
Store.remove(employeeDelete);
break;
员工
//---------------------------------------------------------------------------------------
// Employee class.
//---------------------------------------------------------------------------------------
public class Employee
{
//---------------------------------------------------------------------------------------
// Variables to be used in the employee store.
//---------------------------------------------------------------------------------------
private String employeeName;
private int employeeId;
private String employeeEmail;
//---------------------------------------------------------------------------------------
// Name: Constructors.
// Description:
//---------------------------------------------------------------------------------------
public Employee(String employeeName, int employeeId, String employeeEmail)
{
this.employeeName = employeeName;
this.employeeId = employeeId;
this.employeeEmail = employeeEmail;
}
//---------------------------------------------------------------------------------------
// Overloading the constructor for the use with userInputByName method.
//---------------------------------------------------------------------------------------
public Employee(String employeeName)
{
this.employeeName = employeeName;
}
//---------------------------------------------------------------------------------------
// Name: Getters.
//---------------------------------------------------------------------------------------
public String getEmployeeEmail()
{
return employeeEmail;
}
public String getEmployeeName()
{
return employeeName;
}
public int getEmployeeId()
{
return employeeId;
}
//---------------------------------------------------------------------------------------
// Name: Setters.
//---------------------------------------------------------------------------------------
public void setEmployeeEmail(String employeeEmail)
{
this.employeeEmail = employeeEmail;
}
public void setEmployeeName(String employeeName)
{
this.employeeName = employeeName;
}
public void setEmployeeId(int employeeId)
{
this.employeeId = employeeId;
}
//---------------------------------------------------------------------------------------
// Name: toString.
//---------------------------------------------------------------------------------------
public String toString()
{
return "\t\t\tEmployee\n" +
"********************************************************************\n"+
"Employee Name: "+ employeeName +"\n"+
"Employee Id: " + employeeId +"\n"+
"Employee Email: " + employeeEmail;
}
//---------------------------------------------------------------------------------------
}
删除方法
public Employee remove(Employee key) {
// Remove the Employee by name.
if (map.containsKey(key))
return map.remove(key); // if it is there remove and return.
else
return null; // if its not there return nothing.
}
HashMap 声明
HashMap<String, Employee> map;
private static Scanner keyboard = new Scanner(System.in);
public EmployeeStore() {
map = new HashMap<String, Employee
按名称搜索
// ---------------------------------------------------------------------------------------
// Name: Search by Name.
// //---------------------------------------------------------------------------------------
public Employee searchByName(String employeeName) {
Employee employee = map.get(employeeName);
System.out.println(employee);
return employee;
}
用户输入
//---------------------------------------------------------------------------------------
// Name: userInputByName.
// Description: This method is used in the MainApp to give the user capability to search by name.
//---------------------------------------------------------------------------------------
public static Employee userInputByName()
{
// String temp is for some reason needed. If it is not included
// The code will not execute properly.
String temp = keyboard.nextLine();
Employee e = null;
System.out.println("Please enter the Employee Name:");
String employeeName = keyboard.nextLine();
return e = new Employee(employeeName);
}
添加到 HashMap
//---------------------------------------------------------------------------------------
// Create a Store named Store and add Employee's to the Store.
//---------------------------------------------------------------------------------------
EmployeeStore Store = new EmployeeStore();
Store.add(new Employee("James O' Carroll", 18, "hotmail.com"));
Store.add(new Employee("Andy Carroll", 1171, "yahoo.com"));
Store.add(new Employee("Luis Suarez", 7, "gmail.com"));
最佳答案
您的Hashmap
声明为HashMap<String, Employee> map
.
如果你想从中删除某些内容,那么你需要传入 String
,不是Employee
。尝试这样的事情:
public Employee remove(String key)
{
return map.remove(key);
}
无需检查 HashMap
是否删除之前包含 key 。该方法将返回 null
为你。
编辑:我很惊讶这没有为您引发编译时错误。
编辑2:好的。所以你正在创建你的Employee
对象,然后将其传递到您的 add()
方法。没关系,但你需要有你的add()
方法匹配 remove()
你制定的方法。所以如果你正在做 EmployeeStore.remove(<employee.getEmployeeName())
那么你应该让你的 add()
方法如下:
public Employee add(Employee input)
{
return map.put(input.getEmployeeName(), input);
}
该函数返回 Employee
对象,如果之前有一个存储在 Key
下,但您可以选择忽略该值。拥有您的add()
像这样的方法应该使它匹配你的 remove()
方法。由于您有员工 ID 号,您甚至可以更改 Key
到该整数,因为它可能比名称更独特。
关于java - 删除方法不删除EmployeeStore的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11651854/