Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EmployeeStore的编辑方法(HashMap)_Java_Hashmap_Edit - Fatal编程技术网

Java EmployeeStore的编辑方法(HashMap)

Java EmployeeStore的编辑方法(HashMap),java,hashmap,edit,Java,Hashmap,Edit,嘿,我的编辑方法没有正确运行。我会一步一步地告诉你这是怎么回事。 步骤1:用户输入一个名称,如Luis Suarez,然后searchByName方法将在Employee Store中搜索该名称。 步骤2:用户将再次输入员工详细信息,这一次将覆盖他们希望编辑的员工 现在,我将向您展示我的代码: 主应用程序 //--------------------------------------------------------------------------------------- //

嘿,我的编辑方法没有正确运行。我会一步一步地告诉你这是怎么回事。 步骤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时不应更改员工的姓名

  • 如果调用edit为员工提供尚未存储的姓名,则会插入新员工

  • 如果调用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;