Это потому, что ваш "рабочий" ArrayList был запрошен, но не обновленДругими словами, ваш ArrayList не содержит в себе ни одного работника.
Сначала заполните работника в списке работников, передайте его функции как costByType (worker) вместо создания ее внутри вашей функции, а затем используйте do whileцикл вместокак то так.
do {
System.out.println("Enter type of worker[M/m][W/w][O/o] for finish enter [F/f]:");
type = src.nextLine();
for (Worker w : workers) {
if (type.equalsIgnoreCase("M")) {
cost += ((Manager) w).getSalary() + ((Manager) w).getBonus();
} else if (type.equalsIgnoreCase("W")) {
cost += ((Worker) w).getSalary();
} else if (type.equalsIgnoreCase("O")) {
cost += ((Owner) w).getSalary() + ((Owner) w).getBonus() +Owner.BASE;
}
}
} while(!type.equalsIgnoreCase("F"));