0

I added two of my classes. my question is, after i added new engineers to the ArrayList, how can choose a specific Engineer and "edit" his ID or Salary (through the "menu" using Scanner)? then how can i remove a specific Engineer from the ArrayList? hope somebody can understand my code in order to help. thanks.

    package logic;

    import java.util.ArrayList;
    import java.util.Scanner;

    public class EmployeeList {

    ArrayList<Employee> Emp = new ArrayList<Employee>();


    public void startMenu() {
        StartLogo();

        Scanner s = new Scanner(System.in);

        boolean flag = true;
        int k;
        while (flag) {
            printMenuInstructions();
            k = s.nextInt();

            switch (k) {
            case 1:
                addWorkerMenu();
                break;
            case 2:
                removeWorkerMenu();
                break;
            case 3:
                editWorkerMenu();
                break;
            case 4:
                printGetdetails();
                break;
            case 5:
                printSalary();
                break;
            case 6:
                System.out.println("Bye Bye");
                flag = false;
                break;

            default:
                System.out.println("Invalid key please re enter");
                break;
            }
        }
    }

    public void printSalary() {
        for (int i = 0; i < Emp.size(); i++) {
            if (Emp != null)
                Emp.get(i).printSalary();
            System.out.println();
        }
    }

    public void printGetdetails() {
        for (int i = 0; i < Emp.size(); i++) {
            if (Emp != null)
                Emp.get(i).printDetails();
            System.out.println();
        }
    }

    private void printMenuInstructions() {
        System.out.println("Enter a number 1-4 ");
        System.out.println("1. Add Employee");
        System.out.println("2. Remove Employee");
        System.out.println("3. Edit Employee details");
        System.out.println("4. Employee Report");
        System.out.println("5. Salery Report");
        System.out.println("6. Exit");
    }

    private void printMenuAddWorkerInstructions() {
        System.out.println("Enter a number 1-4 ");
        System.out.println("1. Add Engineer");
        System.out.println("2. Add Manager");
        System.out.println("3. Add Secretary");
        System.out.println("4. Add Cleaner");
        System.out.println("5. return");
    }
    private void printMenuEditWorkerInstructions() {
        System.out.println("Enter a number 1-4 ");
        System.out.println("1. Edit Engineer");
        System.out.println("2. Edit Manager");
        System.out.println("3. Edit Secretary");
        System.out.println("4. Edit Cleaner");
        System.out.println("5. return");
    }

    private void addWorkerMenu() {
        Scanner s = new Scanner(System.in);

        boolean flag = true;
        int k;
        while (flag) {
            printMenuAddWorkerInstructions();
            k = s.nextInt();

            switch (k) {
            case 1:
                Emp.add(new Engineer());
                Emp.get(index).addmenu();
                index++;
                break;
            case 2:
                Emp.add(new Manager());
                Emp.get(index).addmenu();
                index++;
                break;
            case 3:
                Emp.add(new Secretary());
                Emp.get(index).addmenu();
                index++;
                break;
            case 4:
                Emp.add(new Cleaner());
                Emp.get(index).addmenu();
                index++;
                break;
            case 5:
                flag = false;
                break;
            default:
                System.out.println("Invalid key please re enter");
                break;
            }
        }

    }

    private void removeWorkerMenu() {
        Scanner d = new Scanner(System.in);

        boolean flag = true;
        int k;
        while (flag) {
            printMenuReomoveWorkerInstructions();
            k = d.nextInt();

            switch (k) {
            case 1:

                Scanner e = new Scanner(System.in);
                int l;
                while (flag) {
                    printMenuReomoveEngineerInstructions();
                    l = e.nextInt();
                    switch (l) {
                    case 1:
                        // try{
                        Emp.remove(new Engineer());
                        Emp.remove(0);
                        // }catch (ArrayIndexOutOfBoundsException y){
                        // Emp.isEmpty();
                        // System.err.println("array out of bound " +
                        // y.getMessage());
                        //
                        // }
                        // break;
                        // case 2:
                        // Emp.remove(new Engineer());
                        // Emp.remove(1);
                        // break;
                        // case 3:
                        // Emp.remove(new Engineer());
                        // Emp.remove(2);
                        // break;
                        //
                        // default:
                        // break;
                        // }
                        System.out.println("Engineer was removed        succesfully");
                        break;
                    }
                }
            case 2:
                Emp.remove(new Manager());
                Emp.remove(0);
                System.out.println("Manager was removed succesfully");
                break;
            case 3:
                Emp.remove(new Secretary());
                Emp.remove(0);
                System.out.println("secratary was removed succesfully");
                break;
            case 4:
                Emp.remove(new Cleaner());
                Emp.remove(0);
                System.out.println("Cleaner was removed succesfully");
                break;
            case 5:
                flag = false;
                break;
            default:
                System.out.println("Invalid key please re enter");
                break;
            }
        }
    }

    private void editWorkerMenu() {
        Scanner f = new Scanner(System.in);

        boolean flag = true;
        int m;
        while (flag) {
            printMenuEditWorkerInstructions();
            m = f.nextInt();

            switch (m) {
            case 1:

                Emp.set(0, new Engineer());
                addWorkerMenu();
                System.out.println("Engineer was edited succesfully");
                break;

            case 2:
                Emp.set(0, new Manager());
                addWorkerMenu();
                System.out.println("Manager was edited succesfully");
                break;
            case 3:
                Emp.set(0,new Secretary());
                addWorkerMenu();
                System.out.println("secratary was edited succesfully");
                break;
            case 4:
                Emp.set(0,new Cleaner());
                addWorkerMenu();
                System.out.println("Cleaner was edited succesfully");
                break;
            case 5:
                flag = false;
                break;
            default:
                System.out.println("Invalid key please re enter");
                break;
            }
        }

    }

    private void printMenuReomoveEngineerInstructions() {
        System.out.println("which engineer would you like to remove?");
        System.out.println("for the first engineer please press 1");
        System.out.println("for the second engineer please press 2");
        System.out.println("for the third engineer please press 3");

    }

    private void printMenuReomoveWorkerInstructions() {
        System.out.println("Enter a number 1-4 ");
        System.out.println("1. Remove Engineer");
        System.out.println("2. Remove Manager");
        System.out.println("3. Remove Secretary");
        System.out.println("4. Remove Cleaner");
        System.out.println("5. return");
    }

    final static void StartLogo() {
        System.err.println("welcome to daniel corporation");
        System.err.println("***         ***");
        System.err.println("  **       **");
        System.err.println("   ***   ***");
        System.err.println("     ** **");
        System.err.println("      ***");
        System.err.println();
    }

}


And class Engineer is: 

package logic;

import java.util.Scanner;

public class Engineer extends Employee {

    private float Bonus;

    public Engineer() {

    }

    public Engineer(String name, int age, int id, int year, float salary,
            float bonus) {
        super(name, year, year, year, bonus);
        Bonus = bonus;
    }

    public float getBonus() {
        return Bonus;
    }

    public void setBonus(float bonus) {
        Bonus = bonus;
    }

    public void printDetails() {
        String details = " Name is:  " + getName() + "," + " the age is:  "
                + getAge() + " the id is:  " + getId() + ","
                + " the year is:  " + getYear()
                + " the salary in ILS is:  " + super.getSalary() + ","
                + " vacation days left :  " + getBonus();
        System.out.println(details);
    }


    public void addmenu() {
        //TODO
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter Engineer name ");
        String strName = scanner.next();
        try {
            String Name = String.valueOf(strName);
            setName(Name);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());
        }
//      super.setName(scanner.next());
        System.out.println("Enter Engineer Age");
        String strAge = scanner.next();
        try {
            int age = Integer.valueOf(strAge);
//          TODO if (strAge.) ){
//              
//          }
            setAge(age);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());
        }

        // super.setAge(scanner.nextInt());

        System.out.println("Enter Engineer ID number");
        String strId = scanner.next();
        try {
            int Id = Integer.valueOf(strId);
            setId(Id);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());
        }
        //super.setId(scanner.nextInt());
        System.out.println("Enter Engineer year of Start");
        String strYear = scanner.next();
        try {
            int Year = Integer.valueOf(strYear);
            setYear(Year);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());
        }
        //super.setYear(scanner.nextInt());
        System.out.println("Enter Engineer salary in dollars ");
        String strSalary = scanner.next();
        try {
            float Salary = Float.valueOf(strSalary);
            setSalary(Salary);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());

        }       System.out.println("Enter Engineer bonus ");
        String strBonus = scanner.next();
        try {
            float Salary = Float.valueOf(strBonus);
            setSalary(Salary);
        } catch (Exception e) {
            System.err.println("not a number " + e.getMessage());

        System.out.println("Engineer Entered successfuly ");
        }

    }

    @Override
    public void printSalary() {
        System.out.println("Salary of " + super.getName() + " is "
                + super.getSalary());

    }

    @Override
    public void editDetails() {


    }

}
1

3 Answers 3

1

It's easier to use a java.util.Map (key: ID, value = Employee object):

Map<Integer, Employee> theMap = new HashMap<>();
theMap.put(someId, new Engineer("Bob The Builder", 21, someId, 1911, 100000.0, 20.0)); // add
theMap.get(someId); // get
theMap.remove(someId); // remove

With a List, you have to iterate check ID then remove, but you can't remove from a list you are iterating on (so create a copy or use the list iterator):

// with a copy
List<Employee> remainingEmps = new ArrayList<>();
for (Employee e : Emps) {
    if (!e.getId().equals(someId)) { // assumes no employee with null ID
        remainingEmps.add(e);
    }
}
Emps = remainingEmps;
Sign up to request clarification or add additional context in comments.

Comments

0

You should use HashMap insted Of ArrayList Like

Use

HashMap<Integer,Employee> mapEmployeeList = new HashMap<Integer,Employeer>();

Instead Of

ArrayList<Employee> Emp = new ArrayList<Employee>();

Comments

0

You can choose a specific engineer in the following ways:
1. By index:

Engineer engineer = Emp.get(i);//i is the index of the element to be removed.

2. By specific engineer id:

for(Engineer engineer : Emp)
{
    if(engineer.getId() == (<specific id>) //provided Employee class has a getter method for id.
    {
        engineer.setId(<new id>);
    }
}

Similarly for removing from the list, there are the following ways:
1. By index:

Emp.remove(i);//i is the index of the element to be removed.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.