На входе получаем имя департамента, а на выходе должны быть имена всех рабочих из этого отдела. Не могу разобраться с написанием цикла который будет выводить имена этих рабочих. Пока написал только так, но цикл работает неправильно, выводит всех подряд.
public class Test {
public static void main(String[] args) {
System.out.println("Enter a department name: ");
Employee [] employees = new Employee[5];
employees[0] = new Employee("Worker1", Employee.Department.DEPARTMENT_1,1500);
employees[1] = new Employee("Worker2",Employee.Department.DEPARTMENT_2,1700);
employees[2] = new Employee("Worker3",Employee.Department.DEPARTMENT_3,2000);
employees[3] = new Employee("Worker4",Employee.Department.DEPARTMENT_1,3000);
employees[4] = new Employee("Worker5",Employee.Department.DEPARTMENT_3,1100);
Scanner scn = new Scanner(System.in);
String worker = scn.nextLine();
int workerCount = 0;
while (workerCount < employees.length) {
if (worker.equals(Employee.Department.DEPARTMENT_1.name())) {
System.out.println(employees[workerCount].getName());
workerCount++;
}
}
}
}
//Так я получаю NullPointerException
int workerCount = 0;
while (workerCount < employees.length) {
if (worker.equals(employees[workerCount].getDepartmantName().name())) {
System.out.println(employees[workerCount].getName());
}
workerCount++;
}
public class Employee {
private String name;
private Department departmantName;
private double salary;
public String getName() {
return name;
}
public Department getDepartmantName() {
return departmantName;
}
public double getSalary() {
return salary;
}
public void setName(String name) {
this.name = name;
}
public void setDepartmantName(Department departmantName) {
this.departmantName = departmantName;
}
public void setSalary(double salary) {
this.salary = salary;
}
public Employee(String name, Department departmentName, double salary) {
this.name = name;
this.departmantName = departmantName;
this.salary = salary;
}
public enum Department {
DEPARTMENT_1, DEPARTMENT_2, DEPARTMENT_3
}
}
См. выше по поводу счетчика. Я бы вообще от него отказался и юзал цикл foreach:
for (Employee employee : employees) {
if (dept.equals(employee.getDepartmantName().name())) {
System.out.println(employee.getName());
}
}
Вас не запутывает то, что просите ввести имя департамента, а присваиваете введенное значение переменной worker?
Во-первых, вынесите workerCount++ за пределы блока if, иначе вы будете двигаться по циклу только если имя совпало.
Во-вторых, сейчас вы сравниваете не с названием отдела текущего сотрудника, а только с первым отделом : worker.equals(employees[workerCount].getDepartment().name())
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости