2012-07-27 46 views
1

嘿我的編輯方法運行不正常。我會一步一步告訴你它不應該如何工作。 第1步:用戶輸入名稱,如Luis Suarez,然後searchByName方法將在Employee Store中搜索該名稱。 第2步:用戶將再次輸入員工詳細信息,這次它將覆蓋他們希望編輯的員工。EmployeeStore的編輯方法(HashMap)

現在我會告訴你我的代碼:

MainApp

//--------------------------------------------------------------------------------------- 
//    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); 

    } 

編輯

// --------------------------------------------------------------------------------------- 
    // Name: Edit. 
    // --------------------------------------------------------------------------------------- 
    public void edit(Employee employee) 
    { 
     map.put(employee.getEmployeeName(), employee); 
    } 

員工

//--------------------------------------------------------------------------------------- 
// 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; 
    } 
//--------------------------------------------------------------------------------------- 
} 

SearchByName

// --------------------------------------------------------------------------------------- 
    // Name: Search by Name. 
    // --------------------------------------------------------------------------------------- 
    public Employee searchByName(String employeeName) 
    { 
     Employee employee = map.get(employeeName); 
     System.out.println(employee); 
     return employee; 
    } 
+0

你的問題是什麼? – Baz 2012-07-27 12:12:25

+0

你得到了什麼確切的錯誤? – pankar 2012-07-27 12:12:51

+0

你可以發佈'searchByName'方法的實現嗎?此外,如果此方法找到對象,爲什麼在編輯之前對硬編碼值進行編碼? – pankar 2012-07-27 12:21:15

回答

2

看看這個小演示:

HashMap<String, Employee> map = new HashMap<>(); 
map.put("Pendo826", new Employee("Pendo826", 1, "[email protected]")); 

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 

所以乾脆你情況下5

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; 

後,如果您檢視所有你將有變化

+0

謝謝,男人像魅力一樣工作。 – Pendo826 2012-08-01 09:17:16

+0

@ Pendo826你花了這麼長時間,我在等待.. – 2012-08-01 09:18:01

+0

哈哈對不起,我昨天沒有上網。所以我現在進入圖書館。 – Pendo826 2012-08-01 09:30:49

1

由於商店經營他們的名字的員工,當你調用編輯,你不能改變員工的姓名。

  1. 如果您打電話給編輯員工提供名稱尚未存儲的員工,則插入新員工。

  2. 如果您打電話給提供名稱已存儲的員工進行編輯 - 正在更新此名稱的emplyee。