Я пытаюсь самостоятельно изучить использование arraylist и сталкиваюсь с дилеммой:
У меня есть 3 класса, один абстрактный класс отца, который имеет 2 дочерних элемента, экземпляры этих классов хранятся в arraylistв основной программе моя цель состоит в том, чтобы в основном «повысить» зарплату экземпляра сотрудника (доставщик или коммерческий), извлекая пользовательский ввод из консоли и сравнивая этот ввод с соответствующим атрибутом ВСЕХ экземпляров, которые есть у моего массива, дляпример:
Я хочу поднять на 300 долларов или дать плюс экземпляру доставщика
пользовательские вводы имени "george"> (мне нужно найти экземпляр, в котором есть имя george в нем) и использовать методы isPlus и setPlus для этого экземпляра.(у всех классов есть соответствующие геттеры и сеттеры для всех атрибутов и тостринов).
Я не знаю, как это сделать или реализовать, потому что я новичок в использовании массивов, поэтому уже не знаю, что я уже пробовал
Класс Сотрудник
public abstract class Employee {
private static final int PLUS = 300;
private static final int EMPLOYEEQTY = 3;
protected String name;
protected int age;
protected double salary;
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
}
Класс Коммерческий
public class Commercial extends Employee{
private double comission;
public Commercial(String name, int age, double salary, double comission) {
super(name, age, salary);
this.comission = comission;
}
@Override
public boolean isPlus() {
if (this.comission > 200 && this.age > 30) {
return true;
}else {
return false;
}
}
@Override
public double setPlus() {
if (isPlus() == true) {
return this.salary+getPlus();
}
return salary;
}
}
Класс DeliveryMan
public class DeliveryMan extends Employee{
private String zone;
public DeliveryMan(String name, int age, double salary, String zone) {
super(name, age, salary);
this.zone = zone;
}
@Override
public boolean isPlus() {
if (this.zone.equalsIgnoreCase("zona 3") && this.age > 25) {
return true;
}
return false;
}
@Override
public double setPlus() {
if (isPlus() == true) {
return salary+getPlus();
}
return salary;
}
}
Программа класса
public class Program {
public static void main(String[] args) {
String name,zone,opt;
Integer age;
Double salary,comission;
ArrayList<Employee> al = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < Employee.getEmployeeqty(); i++) {
System.out.println("Ingrese el nombre del empleado: ");
name = sc.next();
System.out.println("Ingrese la edad del empleado: ");
age = sc.nextInt();
System.out.println("Ingrese el salario del empleado: ");
salary = sc.nextDouble();
System.out.println("Es el empleado un Repartidor o un Comercial?");
opt = sc.nextLine();
switch (opt.toLowerCase()) {
case "repartidor":
System.out.println("Ingrese la zona del repartidor: (ej: zona 3)");
zone = sc.nextLine().toLowerCase();
al.add(new DeliveryMan(name, age, salary, zone));
break;
case "comercial":
System.out.println("Ingrese la cantidad de la comision del comercial: ");
comission = sc.nextDouble();
al.add(new Commercial(name, age, salary, comission));
break;
default: System.out.println("Opcion ingresada no es valida, por favor, indique si es un repartidor o un comercial.");
}
}
}
}