diff --git a/src/main/java/rocks/zipcode/quiz4/arrays/ArrayUtils.java b/src/main/java/rocks/zipcode/quiz4/arrays/ArrayUtils.java index 6deaf61..89cb70f 100644 --- a/src/main/java/rocks/zipcode/quiz4/arrays/ArrayUtils.java +++ b/src/main/java/rocks/zipcode/quiz4/arrays/ArrayUtils.java @@ -1,22 +1,53 @@ package rocks.zipcode.quiz4.arrays; +import java.util.stream.Stream; + /** * @author leon on 01/01/2019. */ public class ArrayUtils { + public static String getMiddleElement(String[] values) { - return null; + return values[values.length / 2]; } public static String[] removeMiddleElement(String[] values) { - return null; + +// String[] removeMiddle = new String[values.length - 1]; +// int mid = values.length / 2; +// for (int i = 0; i < values.length ; i++) { +// if(i < mid){ +// removeMiddle[i] = values[i]; +// } +// if(i > mid) { +// removeMiddle[i-1] = values[i]; +// } +// } +// +// return removeMiddle; + return Stream.of(values) + .filter(v -> !v.equals(getMiddleElement(values))) + .toArray(String[]::new); + } public static String getLastElement(String[] values) { - return null; + return values[values.length - 1]; } public static String[] removeLastElement(String[] values) { - return null; + String[] removeLast = new String[values.length-1]; + System.arraycopy(values, 0, removeLast, 0, values.length - 1); + return removeLast; } + + // arraycopy(Object source_arr, int sourcePos, +// Object dest_arr, int destPos, int len) +// Parameters : +// source_arr : array to be copied from +// sourcePos : starting position in source array from where to copy +// dest_arr : array to be copied in +// destPos : starting position in destination array, where to copy in +// len : total no. of components to be copied. + } \ No newline at end of file diff --git a/src/main/java/rocks/zipcode/quiz4/collections/WordCounter.java b/src/main/java/rocks/zipcode/quiz4/collections/WordCounter.java index 2bf5ec2..3068634 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/WordCounter.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/WordCounter.java @@ -1,12 +1,32 @@ package rocks.zipcode.quiz4.collections; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; public class WordCounter { + + String[] stringArray; + public WordCounter(String... strings) { + this.stringArray = strings; } public Map getWordCountMap() { - return null; + + Map map = new HashMap<>(); +// +// for(String s : stringArray){ +// if(map.keySet().contains(s)){ +// map.put(s, map.get(s)+1); +// } else { +// map.put(s,1); +// } +// } + for(String s : stringArray){ + map.compute(s, (k,v) -> (v == null) ? 1 : v+1); + } + return map; + } } diff --git a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Curry.java b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Curry.java index 199cefc..c4abe9b 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Curry.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Curry.java @@ -1,4 +1,10 @@ package rocks.zipcode.quiz4.collections.culonary; -public class Curry { +public class Curry implements Spice{ + + @Override + public String getName() { + return "Curry"; + } + } diff --git a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Food.java b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Food.java index e06abbc..fecb8a6 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Food.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Food.java @@ -1,5 +1,7 @@ package rocks.zipcode.quiz4.collections.culonary; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -7,14 +9,36 @@ * @author leon on 27/12/2018. */ public class Food { + + private List spicesAdded; + public List getAllSpices() { - return null; + return spicesAdded; + } + + public Food() { + this.spicesAdded = new ArrayList<>(); } public > Map getSpiceCount() { - return null; + Map map = new HashMap<>(); +// for (Spice s: spicesAdded) { +// SpiceType spice = (SpiceType)s.getClass(); +// if(map.containsKey(spice)){ +// map.replace(spice, map.get(spice),map.get(spice) +1); +// }else { +// map.put(spice,1); +// } +// } +// return map; + for(Spice s: spicesAdded){ + map.compute((SpiceType)s.getClass(), (k,v) -> (v == null) ? 1: v+1); + } + return map; } public void applySpice(Spice spice) { + spicesAdded.add(spice); } + } diff --git a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Ginger.java b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Ginger.java index 3c4e177..17b0fb8 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Ginger.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Ginger.java @@ -3,5 +3,10 @@ /** * @author leon on 27/12/2018. */ -public class Ginger { +public class Ginger implements Spice{ + @Override + public String getName() { + return "Ginger"; + } + } diff --git a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Pepper.java b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Pepper.java index 4b771a8..97cd24f 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Pepper.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Pepper.java @@ -3,5 +3,10 @@ /** * @author leon on 27/12/2018. */ -public class Pepper { +public class Pepper implements Spice{ + @Override + public String getName() { + return "Pepper"; + } + } diff --git a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Spice.java b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Spice.java index 9ab865b..ed6e324 100644 --- a/src/main/java/rocks/zipcode/quiz4/collections/culonary/Spice.java +++ b/src/main/java/rocks/zipcode/quiz4/collections/culonary/Spice.java @@ -4,4 +4,5 @@ * @author leon on 27/12/2018. */ public interface Spice { + public String getName(); } diff --git a/src/main/java/rocks/zipcode/quiz4/fundamentals/Calculator.java b/src/main/java/rocks/zipcode/quiz4/fundamentals/Calculator.java index 02f2618..154373c 100644 --- a/src/main/java/rocks/zipcode/quiz4/fundamentals/Calculator.java +++ b/src/main/java/rocks/zipcode/quiz4/fundamentals/Calculator.java @@ -1,35 +1,35 @@ package rocks.zipcode.quiz4.fundamentals; +import java.util.Arrays; + /** * @author leon on 21/12/2018. */ public class Calculator { public static Double squareRoot(Double value) { - return null; + return Math.sqrt(value); } public static Double square(Double value) { - return null; + return value * value; } public static Double[] squareRoots(Double... value) { - return null; + return Arrays.stream(value).map(Calculator::squareRoot).toArray(Double[]::new); } public static Double[] squares(Double... values) { - return null; + return Arrays.stream(values).map(Calculator::square).toArray(Double[]::new); } - public static Double add(Double value1, Double value2) { - return null; - } + public static Double add(Double value1, Double value2) { return value1 + value2; } public static Double subtract(Double value1, Double value2) { - return null; + return value1 - value2; } public static Double divide(Double divisor, Double dividend) { - return null; + return divisor / dividend; } } diff --git a/src/main/java/rocks/zipcode/quiz4/fundamentals/StringUtils.java b/src/main/java/rocks/zipcode/quiz4/fundamentals/StringUtils.java index 5ec61be..c9a3366 100644 --- a/src/main/java/rocks/zipcode/quiz4/fundamentals/StringUtils.java +++ b/src/main/java/rocks/zipcode/quiz4/fundamentals/StringUtils.java @@ -1,34 +1,70 @@ package rocks.zipcode.quiz4.fundamentals; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Stream; + /** * @author leon on 21/12/2018. */ public class StringUtils { public static Character getMiddleCharacter(String string) { - return null; + return string.charAt(string.length()/2); } public static String capitalizeMiddleCharacter(String str) { - return null; + int middle = str.length() / 2; + return str.substring(0,middle)+ Character.toUpperCase(getMiddleCharacter(str)) + str.substring(middle + 1); } public static String lowerCaseMiddleCharacter(String str) { - return null; + int middle = str.length() / 2; + return str.substring(0,middle)+ Character.toLowerCase(getMiddleCharacter(str)) + str.substring(middle + 1); } public static Boolean isIsogram(String str) { - return null; + Set result = new HashSet(); + for (int i = 0; i < str.length(); i++) { + result.add(str.charAt(i)); + } + return str.length() == result.size(); } public static Boolean hasDuplicateConsecutiveCharacters(String str) { - return null; + for (int i = 1; i < str.length() ; i++) { + if(str.charAt(i) == str.charAt(i-1)){ + return true; + } + } + return false; } public static String removeConsecutiveDuplicateCharacters(String str) { - return null; + + String result = ""; + int index = 0; + for (int i = 1; i < str.length() ; i++) { + if(str.charAt(i) == str.charAt(i-1)){ + result += str.substring(index, i-1); + index = 1 + i; + } + } + result += str.substring(index); + return result; + } public static String invertCasing(String str) { - return null; + String[] arr = str.split(""); + String result = ""; + for (String s : arr){ + if(Character.isUpperCase(s.charAt(0))){ + result += s.toLowerCase(); + } else{ + result += s.toUpperCase(); + } + } + return result; } + } \ No newline at end of file diff --git a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Account.java b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Account.java index 40eb4a8..3e2789a 100644 --- a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Account.java +++ b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Account.java @@ -3,11 +3,16 @@ /** * @author leon on 30/12/2018. */ -public class Account extends BankAccount { +public class Account { + + private long id; + public Long getId() { - return null; + return this.id; } public void setId(Long id) { + this.id = id; } + } diff --git a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Bank.java b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Bank.java index 0dd4183..6c3d9cb 100644 --- a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Bank.java +++ b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Bank.java @@ -1,17 +1,30 @@ package rocks.zipcode.quiz4.objectorientation.account; +import java.util.ArrayList; +import java.util.List; + /** * @author leon on 27/12/2018. */ public class Bank { + + private List accounts; + + public Bank(){ + this.accounts = new ArrayList<>(); + } + public BankAccount removeBankAccountByIndex(Integer indexNumber) { - return null; + BankAccount account = accounts.get(indexNumber); + accounts.remove((int)indexNumber); + return account; } public void addBankAccount(BankAccount bankAccount) { + accounts.add(bankAccount); } public Boolean containsBankAccount(BankAccount bankAccount) { - throw new UnsupportedOperationException("Method not yet implemented"); + return accounts.contains(bankAccount); } } diff --git a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/BankAccount.java b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/BankAccount.java index 70ccb74..16fdf25 100644 --- a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/BankAccount.java +++ b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/BankAccount.java @@ -3,7 +3,40 @@ /** * @author leon on 27/12/2018. */ -public class BankAccount { +public class BankAccount extends Account implements Transactable { + + private double balance; + + public BankAccount(){ + balance = 0.0; + } + public void setBalance(Double val) { + this.balance = val; + } + + @Override + public void deposit(Double amountToIncreaseBy) { + if(amountToIncreaseBy < 0) { + throw new IllegalArgumentException("Can't deposit negative money"); + } + balance += amountToIncreaseBy; } + + @Override + public void withdrawal(Double amountToDecreaseBy) { + if(amountToDecreaseBy < 0){ + throw new IllegalArgumentException("Can't withdraw a negative amount"); + }else if(amountToDecreaseBy > balance){ + throw new IllegalArgumentException("Balance is too low!"); + } else { + balance -= amountToDecreaseBy; + } + } + + @Override + public Double getBalance() { + return balance; + } + } diff --git a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Employee.java b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Employee.java index 8407f1a..4c1c4ab 100644 --- a/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Employee.java +++ b/src/main/java/rocks/zipcode/quiz4/objectorientation/account/Employee.java @@ -3,18 +3,65 @@ /** * @author leon on 30/12/2018. */ -public class Employee { +public class Employee implements Worker, Transactable { + + private BankAccount bankAccount; + private Double hoursWorked; + private Double wage; + + public Employee() { + bankAccount = new BankAccount(); + hoursWorked = 0.0; + wage = 35.0; } public Employee(BankAccount bankAccount) { + this.bankAccount = bankAccount; + hoursWorked = 0.0; + wage = 35.0; } public BankAccount getBankAccount() { - return null; + return bankAccount; } public void setBankAccount(BankAccount bankAccount) { + this.bankAccount = bankAccount; + } + + @Override + public void deposit(Double amountToIncreaseBy) { + bankAccount.deposit(amountToIncreaseBy); + } + + @Override + public void withdrawal(Double amountToDecreaseBy) { + bankAccount.withdrawal(amountToDecreaseBy); + } + + @Override + public Double getBalance() { + return bankAccount.getBalance(); + } + + @Override + public void increaseHoursWorked(Double numberOfHours) { + hoursWorked += numberOfHours; + } + + @Override + public Double getHoursWorked() { + return this.hoursWorked; + } + + @Override + public Double getHourlyWage() { + return wage; + } + @Override + public Double getMoneyEarned() { + return this.wage * this.hoursWorked; } } diff --git a/src/test/java/rocks/zipcode/quiz4/objectorientation/employee/EmployeePolymorphismTest.java b/src/test/java/rocks/zipcode/quiz4/objectorientation/employee/EmployeePolymorphismTest.java index ffc4422..fd37e08 100644 --- a/src/test/java/rocks/zipcode/quiz4/objectorientation/employee/EmployeePolymorphismTest.java +++ b/src/test/java/rocks/zipcode/quiz4/objectorientation/employee/EmployeePolymorphismTest.java @@ -22,7 +22,7 @@ public void test1() { public void test2() { Assert.assertTrue(employee instanceof Worker); } - + @Test public void test3() { Assert.assertFalse(employee instanceof Account); }