Java EmployeeStore的编辑方法(HashMap)
嘿,我的编辑方法没有正确运行。我会一步一步地告诉你这是怎么回事。 步骤1:用户输入一个名称,如Luis Suarez,然后searchByName方法将在Employee Store中搜索该名称。 步骤2:用户将再次输入员工详细信息,这一次将覆盖他们希望编辑的员工 现在,我将向您展示我的代码: 主应用程序Java EmployeeStore的编辑方法(HashMap),java,hashmap,edit,Java,Hashmap,Edit,嘿,我的编辑方法没有正确运行。我会一步一步地告诉你这是怎么回事。 步骤1:用户输入一个名称,如Luis Suarez,然后searchByName方法将在Employee Store中搜索该名称。 步骤2:用户将再次输入员工详细信息,这一次将覆盖他们希望编辑的员工 现在,我将向您展示我的代码: 主应用程序 //--------------------------------------------------------------------------------------- //
//---------------------------------------------------------------------------------------
// Name: Case 4: Edit.
// Description: Choice 4 gives the user an option to edit the employee's in the store.
// This consists of changing the employee's name,id and e-mail address.
//---------------------------------------------------------------------------------------
case 5:
System.out.println("Edit");
Employee employeeEdit = MenuMethods.userInputByName();
Store.searchByName(employeeEdit.getEmployeeName());
if (employeeEdit != null)
{
employeeEdit.setEmployeeName("Joe");
employeeEdit.setEmployeeId(1);
employeeEdit.setEmployeeEmail("webmail.com");
Store.edit(employeeEdit);
}
break;
UserInputByName
//---------------------------------------------------------------------------------------
// 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);
}
编辑
雇员
//---------------------------------------------------------------------------------------
// 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;
}
//---------------------------------------------------------------------------------------
}
按名称搜索
// ---------------------------------------------------------------------------------------
// Name: Search by Name.
// ---------------------------------------------------------------------------------------
public Employee searchByName(String employeeName)
{
Employee employee = map.get(employeeName);
System.out.println(employee);
return employee;
}
由于商店按员工的姓名进行操作,因此在调用edit时不应更改员工的姓名
看看这个小演示:
HashMap<String, Employee> map = new HashMap<>();
map.put("Pendo826", new Employee("Pendo826", 1, "Pendo826@gmail.com"));
Employee e = map.get("Pendo826"); // get emp instance by name
e.setEmployeeName("Pendo"); // emp name of that instance edited
System.out.println(map.get("Pendo826").getEmployeeName()); // name is changed within map
在此之后,如果您查看所有内容,您将得到更改您得到的确切错误是什么?您能否发布
searchByName
方法的实现?此外,如果此方法找到对象,为什么在编辑之前要硬编码值?我使用searchByName方法编辑了我的代码。硬编码的值,因为我正在测试使用编辑的各个方法。似乎employeeEdit.setEmployeeName()中设置的值代码>强制地图不查找员工
对象并插入新对象。在设置它之前打印出这个值的内容。对不起,我昨天没有上网。所以我现在进了图书馆。
HashMap<String, Employee> map = new HashMap<>();
map.put("Pendo826", new Employee("Pendo826", 1, "Pendo826@gmail.com"));
Employee e = map.get("Pendo826"); // get emp instance by name
e.setEmployeeName("Pendo"); // emp name of that instance edited
System.out.println(map.get("Pendo826").getEmployeeName()); // name is changed within map
System.out.println("Edit");
Employee employeeEdit = MenuMethods.userInputByName();
Employee e = Store.searchByName(employeeEdit.getEmployeeName());
if (e != null)
{
e.setEmployeeName("Joe");
e.setEmployeeId(1);
e.setEmployeeEmail("webmail.com");
// Store.edit(employeeEdit); // no need as you already have made changes to reference e
}
break;