diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..179761a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/out +/.idea \ No newline at end of file diff --git a/Employee.java b/Employee.java new file mode 100644 index 0000000..606c454 --- /dev/null +++ b/Employee.java @@ -0,0 +1,92 @@ +import java.util.Scanner; + +public class Employee { + + // Define employee properties + private String name; + private int age; + boolean isActive; + private double salary; + + // Set properties of employee + public Employee(String name, int age, boolean isActive, double salary) { + setName(name); + setAge(age); + setActive(isActive); + setSalary(salary); + } + + // Getters and Setters + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public boolean isActive() { + return isActive; + } + + public void setActive(boolean active) { + isActive = active; + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } +} + +class Intern extends Employee { + // Set properties of Intern + // Using super to get properties from Employee class + public Intern(String name, int age, boolean isActive, double salary) { + super(name, age, isActive, salary); + } + + + // Custom setSalary to check if intern + // has higher salary than 20000 + public void setSalary(double salary) { + double maxInternSalary = 20000; + + // If salary is higher than maxInternSalary + if(salary > maxInternSalary){ + // Print warning that salary exceeds limit + // Set salary to maxInternSalary + System.out.println("!!! [INTERN] " + getName() + "'s salary exceeds maximum salary of €" + maxInternSalary + " (€" + salary + ")"); + System.out.println("!!! Type \"continue\" to set " + getName() + "'s salary to €" + maxInternSalary + " or \"edit\" to change " + getName() + "'s salary"); + Scanner sc = new Scanner(System.in); + String validate = sc.nextLine(); + + // Continue by automatically setting the salary to the maxInternSalary + if(validate.equals("continue")){ + System.out.println("!!! Setting " + getName() + "'s salary to €" + maxInternSalary); + super.setSalary(20000); + } + // Edit the salary manually + else if(validate.equals("edit")){ + System.out.println("Enter the new salary for " + getName()); + double newSalary = sc.nextDouble(); + super.setSalary(newSalary); + } + } + // Set salary as passed + else { + super.setSalary(salary); + } + } +} \ No newline at end of file diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..679b546 --- /dev/null +++ b/Main.java @@ -0,0 +1,90 @@ +import java.util.ArrayList; + +public class Main { + public static void main(String[] args) { + System.out.println("========= TASK 1 & 2 ========="); + // Call maxMinDiff method + maxMinDiff(); + + System.out.println("\n========= TASK 3 & 4 ========="); + // Create array of Employee objects using ArrayList + ArrayList employees = new ArrayList<>(); + employees.add(new Employee("Alex", 21, true, 23845)); + employees.add(new Employee("Ben", 25, true, 21943)); + employees.add(new Employee("Charlie", 23, false, 0)); + employees.add(new Intern("David", 28, true, 18500)); + employees.add(new Employee("Elizabeth", 22, true, 19945)); + employees.add(new Employee("Frank", 26, true, 22345)); + employees.add(new Employee("George", 27, true, 23845)); + employees.add(new Intern("Hannah", 22, true, 18500)); + employees.add(new Intern("Isabella", 23, true, 18500)); + employees.add(new Intern("Jack", 24, true, 21900)); + + // For loop to print employee information + for (Employee employee : employees) { + // if employee is an intern + if (employee instanceof Intern) { + // Print intern information + System.out.println("\nIntern:" + "\nName: " + employee.getName() + "\nAge: " + employee.getAge() + "\nIs active: " + employee.isActive() + "\nSalary: €" + employee.getSalary()); + } + // if employee is not an intern + else { + // Print employee information + System.out.println("\nEmployee:" + "\nName: " + employee.getName() + "\nAge: " + employee.getAge() + "\nIs active: " + employee.isActive() + "\nSalary: " + employee.getSalary()); + } + } + } + + // Method to print maximum, minimum and difference between highest and lowest numbers in an array + public static void maxMinDiff() { + // Creating array using ArrayList + ArrayList numbers = new ArrayList<>(); + numbers.add(1); + numbers.add(3); + numbers.add(2); + numbers.add(7); + numbers.add(9); + numbers.add(23); + numbers.add(12); + numbers.add(18); + + // Print the numbers array as string + System.out.println("Numbers: " + numbers); + + // Define variables + int highestNumber = 0; + int lowestNumber = Integer.MAX_VALUE; + int secondLowestNumber = Integer.MAX_VALUE; + + // For loop going through all numbers in array + for (int number : numbers) { + // if current number is higher than highestNumber + // set highestNumber to current number + if(number > highestNumber){ + highestNumber = number; + } + + // if current number is lower than lowestNumber + // set lowestNumber to current number + if(number < lowestNumber){ + lowestNumber = number; + } + } + + // For loop again to get the second-lowest number + for (int number : numbers) { + // if current number is lower than secondLowestNumber and + // higher than lowestNumber, set secondLowestNumber to current number + if(number < secondLowestNumber && number > lowestNumber){ + secondLowestNumber = number; + } + } + + // Print results + System.out.println("Highest number: " + highestNumber); + System.out.println("Lowest number: " + lowestNumber); + System.out.println("Difference between highest and lowest numbers: " + (highestNumber-lowestNumber)); + System.out.println("Second-lowest number: " + secondLowestNumber); + + } +}