From 30c0cfce75e64801cf59fb7404e487881d7f5030 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Fri, 24 Sep 2021 14:10:21 -0400 Subject: [PATCH 01/14] test --- src/main/java/com/h2/App.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/h2/App.java b/src/main/java/com/h2/App.java index 011ff16b..048c0b16 100644 --- a/src/main/java/com/h2/App.java +++ b/src/main/java/com/h2/App.java @@ -12,6 +12,6 @@ public static void main( String[] args ) } public static int doubleTheNumber(int number) { - return -1; + return 2 * number; } } From 84e8266779acbbdd3fc89956f7604727b0ae93e3 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Fri, 24 Sep 2021 16:28:07 -0400 Subject: [PATCH 02/14] finding the best loan rates --- src/main/java/com/h2/App.java | 9 +++++++ src/main/java/com/h2/BestLoanRates.java | 35 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/java/com/h2/BestLoanRates.java diff --git a/src/main/java/com/h2/App.java b/src/main/java/com/h2/App.java index 048c0b16..cd25af9c 100644 --- a/src/main/java/com/h2/App.java +++ b/src/main/java/com/h2/App.java @@ -14,4 +14,13 @@ public static void main( String[] args ) public static int doubleTheNumber(int number) { return 2 * number; } + + private static int add(int[] numbers) { + int sum = 0; + for (int i = 0; i < numbers.length; i++) { + sum+=numbers[i]; + } + return sum; + } + } diff --git a/src/main/java/com/h2/BestLoanRates.java b/src/main/java/com/h2/BestLoanRates.java new file mode 100644 index 00000000..36354788 --- /dev/null +++ b/src/main/java/com/h2/BestLoanRates.java @@ -0,0 +1,35 @@ +package com.h2; + +import java.util.Map; +import java.util.Scanner; + +public class BestLoanRates { + public static final Map bestRates = Map.of( + 1, 5.50f, + 2,3.45f, + 3, 2.67f + + ); + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.println("Enter your name"); + String name = scanner.nextLine(); + System.out.println("Hello "+ name); + + System.out.println("Enter the loan term (in years)"); + int loanTermsInYears = scanner.nextInt(); + float bestRate = getRates(loanTermsInYears); + if (bestRate == 0.0f) { + System.out.println("No available rates for term: " + loanTermsInYears + " years"); + } else { + System.out.println("Best Available Rate: " + bestRate + "%"); + } + } + + public static float getRates(int loanTermInYears) { + if(bestRates.containsKey(loanTermInYears)) { + return bestRates.get(loanTermInYears); + } + return 0.0f; + } +} From cc7c160a353d7c27b1697cfe281e54c896d15741 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Fri, 24 Sep 2021 16:38:58 -0400 Subject: [PATCH 03/14] start of part 3 --- src/main/java/com/h2/SavingsCalculator.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/com/h2/SavingsCalculator.java diff --git a/src/main/java/com/h2/SavingsCalculator.java b/src/main/java/com/h2/SavingsCalculator.java new file mode 100644 index 00000000..3f89e49e --- /dev/null +++ b/src/main/java/com/h2/SavingsCalculator.java @@ -0,0 +1,7 @@ +package com.h2; + +public class SavingsCalculator { + private float[] credits; + private float[] debits; + +} From f1f37767e8458e859392a4948ff2d6689e98a01a Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Fri, 24 Sep 2021 16:54:16 -0400 Subject: [PATCH 04/14] module 3 --- src/main/java/com/h2/SavingsCalculator.java | 57 +++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/main/java/com/h2/SavingsCalculator.java b/src/main/java/com/h2/SavingsCalculator.java index 3f89e49e..96f06538 100644 --- a/src/main/java/com/h2/SavingsCalculator.java +++ b/src/main/java/com/h2/SavingsCalculator.java @@ -1,7 +1,64 @@ package com.h2; +import java.time.LocalDate; +import java.time.Year; +import java.time.YearMonth; + public class SavingsCalculator { private float[] credits; private float[] debits; + public SavingsCalculator(float[] credits, float[] debits) { + this.credits = credits; + this.debits = debits; + } + + private float sumOfCredits() { + float sum = 0.0f; + for(float credit:credits) { + sum += credit; + } + return sum; + } + + private float sumOfDebits() { + float sum = 0.0f; + for (float debit:debits) { + sum += debit; + } + return sum; + } + + private static int remainingDaysInMonth(LocalDate date) { + YearMonth yearMonth = YearMonth.of(date.getYear(), date.getMonth()); + int totalDaysInMonth = yearMonth.lengthOfMonth(); + int remainingDays = totalDaysInMonth - date.getDayOfMonth(); + return remainingDays; + } + + public float calculate() { + return sumOfCredits() - sumOfDebits(); + } + + public static void main(String[] args) { + final String[] creditsAsString = args[0].split(","); + final String[] debitsAsString = args[1].split(","); + + final float[] credits = new float[creditsAsString.length]; + final float[] debits = new float[debitsAsString.length]; + + for (int i = 0; i < creditsAsString.length; i++) { + credits[i] = Float.parseFloat(creditsAsString[i]); + } + + for (int i = 0; i < debitsAsString.length; i++) { + debits[i] = Float.parseFloat(debitsAsString[i]); + } + + final SavingsCalculator calculator = new SavingsCalculator(credits,debits); + + float netSavings = calculator.calculate(); + System.out.println("Net Savings = " + netSavings + ", remaining days in month = " + remainingDaysInMonth(LocalDate.now())); + } + } From e01977528935b5e3e0dfa2dc9d55f4b67b512376 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 11:19:33 -0400 Subject: [PATCH 05/14] part of module 4 --- src/main/java/com/h2/MortgageCalculator.java | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/com/h2/MortgageCalculator.java diff --git a/src/main/java/com/h2/MortgageCalculator.java b/src/main/java/com/h2/MortgageCalculator.java new file mode 100644 index 00000000..4689bd97 --- /dev/null +++ b/src/main/java/com/h2/MortgageCalculator.java @@ -0,0 +1,29 @@ +package com.h2; + +public class MortgageCalculator { + private long loanAmount; + private int termInYears; + private float annualRate; + private double monthlyPayment; + + public MortgageCalculator(long loanAmount, int termInYears, float annualRate) { + this.loanAmount = loanAmount; + this.termInYears = termInYears; + this.annualRate = annualRate; + } + + private int getNumberOfPayments() { + return termInYears*12; + } + + private float getMonthlyInterestRate(){ + float interestRate; + interestRate = (annualRate/100)/12; +// interestRate/=12; + return interestRate; + } + + public void calculateMonthlyPayment() { + + } +} From 72df6ae5510718e47fa1de33e970f044f22d9c70 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 11:37:58 -0400 Subject: [PATCH 06/14] part of module 4 --- src/main/java/com/h2/MortgageCalculator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/h2/MortgageCalculator.java b/src/main/java/com/h2/MortgageCalculator.java index 4689bd97..38848fa7 100644 --- a/src/main/java/com/h2/MortgageCalculator.java +++ b/src/main/java/com/h2/MortgageCalculator.java @@ -24,6 +24,10 @@ private float getMonthlyInterestRate(){ } public void calculateMonthlyPayment() { - + long P = loanAmount; + float r = getMonthlyInterestRate(); + int n = getNumberOfPayments(); + double M = P * (((r * Math.pow(1 + r, n))) / ((Math.pow((1 + r), n)) - 1)); + this.monthlyPayment = M; } } From e7bc84807364b0a53daeace8307422866cec4e03 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 11:54:29 -0400 Subject: [PATCH 07/14] part of module 4 --- src/main/java/com/h2/MortgageCalculator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/h2/MortgageCalculator.java b/src/main/java/com/h2/MortgageCalculator.java index 38848fa7..73d0ec5e 100644 --- a/src/main/java/com/h2/MortgageCalculator.java +++ b/src/main/java/com/h2/MortgageCalculator.java @@ -1,5 +1,7 @@ package com.h2; +import java.text.DecimalFormat; + public class MortgageCalculator { private long loanAmount; private int termInYears; @@ -30,4 +32,9 @@ public void calculateMonthlyPayment() { double M = P * (((r * Math.pow(1 + r, n))) / ((Math.pow((1 + r), n)) - 1)); this.monthlyPayment = M; } + + public String toString() { + DecimalFormat df = new DecimalFormat("####0.00"); + return "monthlyPayment: " + df.format(monthlyPayment); + } } From e8f3ddbf7314c2878e90e89560dbd29260424d1f Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 12:04:43 -0400 Subject: [PATCH 08/14] module 4 --- src/main/java/com/h2/MortgageCalculator.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/h2/MortgageCalculator.java b/src/main/java/com/h2/MortgageCalculator.java index 73d0ec5e..3c838ca3 100644 --- a/src/main/java/com/h2/MortgageCalculator.java +++ b/src/main/java/com/h2/MortgageCalculator.java @@ -37,4 +37,16 @@ public String toString() { DecimalFormat df = new DecimalFormat("####0.00"); return "monthlyPayment: " + df.format(monthlyPayment); } + + public static void main(String[] args) { + long loanAmount = Long.parseLong(args[0]); + int termsInYears = Integer.parseInt(args[1]); + float annualRate = Float.parseFloat(args[2]); + + MortgageCalculator calculator = new MortgageCalculator(loanAmount, termsInYears, annualRate); + + calculator.calculateMonthlyPayment(); + System.out.println(calculator.toString()); + + } } From fc2eeaccef5be51bd2617acf1274ac618814985c Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 12:15:58 -0400 Subject: [PATCH 09/14] start of module 5 --- src/main/java/Finance.java | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/main/java/Finance.java diff --git a/src/main/java/Finance.java b/src/main/java/Finance.java new file mode 100644 index 00000000..a1e53519 --- /dev/null +++ b/src/main/java/Finance.java @@ -0,0 +1,3 @@ +public class Finance { + +} From 472d08daebb7d41a9f8755df1195702c118556b5 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 12:34:47 -0400 Subject: [PATCH 10/14] part of module 5 --- src/main/java/Finance.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/Finance.java b/src/main/java/Finance.java index a1e53519..068ed934 100644 --- a/src/main/java/Finance.java +++ b/src/main/java/Finance.java @@ -1,3 +1,17 @@ +import java.util.Map; + public class Finance { + public final static String BEST_LOAN_RATES = "bestLoanRates"; + public final static String SAVINGS_CALCULATOR = "savingsCalculator"; + public final static String MORTGAGE_CALCULATOR = "mortgageCalculator"; + + public final static Map commandsToUsage = Map.of( + BEST_LOAN_RATES, "usage: bestLoanRates", + SAVINGS_CALCULATOR, "usage: savingsCalculator ", + MORTGAGE_CALCULATOR, "usage: mortgageCalculator " + ); + private static boolean validateCommandArguments(String[] args) { + return false; + } } From 75f885ef9047f117a3b72c9ff4e33f0ae0b7b595 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 12:59:59 -0400 Subject: [PATCH 11/14] module 5 --- src/main/java/Finance.java | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/main/java/Finance.java b/src/main/java/Finance.java index 068ed934..c7be9fee 100644 --- a/src/main/java/Finance.java +++ b/src/main/java/Finance.java @@ -1,3 +1,8 @@ +import com.h2.BestLoanRates; +import com.h2.MortgageCalculator; +import com.h2.SavingsCalculator; + +import java.util.Arrays; import java.util.Map; public class Finance { @@ -12,6 +17,47 @@ public class Finance { ); private static boolean validateCommandArguments(String[] args) { + switch (args[0]) { + case BEST_LOAN_RATES: + return args.length == 1; + case SAVINGS_CALCULATOR: + return args.length == 3; + case MORTGAGE_CALCULATOR: + return args.length == 4; + } return false; } + + private static void executeCommand(String command, String[] arguments) { + switch (command) { + case BEST_LOAN_RATES: + System.out.println("Finding best loan rates ..."); + BestLoanRates.main(arguments); + return; + case SAVINGS_CALCULATOR: + System.out.println("Finding your net savings ..."); + SavingsCalculator.main(arguments); + return; + case MORTGAGE_CALCULATOR: + System.out.println("Finding your monthly payment ..."); + MortgageCalculator.main(arguments); + return; + } + } + + public static void main(String[] args) { + String command = args[0]; + if (!commandsToUsage.containsKey(command)) { + System.out.println(command + ": command not found"); + return; + } + + boolean isValidCommand = validateCommandArguments(args); + if(!isValidCommand) { + System.out.println(commandsToUsage.get(args[0])); + return; + } + + executeCommand(command, Arrays.copyOfRange(args, 1, args.length)); + } } From 49c84359beaacf4a43ba85a66e5b1618b2ec17e5 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 13:16:31 -0400 Subject: [PATCH 12/14] module 6 --- src/main/java/com/h2/MortgageCalculator.java | 7 ++-- src/main/java/com/h2/Utilities.java | 37 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/h2/Utilities.java diff --git a/src/main/java/com/h2/MortgageCalculator.java b/src/main/java/com/h2/MortgageCalculator.java index 3c838ca3..bbbc0284 100644 --- a/src/main/java/com/h2/MortgageCalculator.java +++ b/src/main/java/com/h2/MortgageCalculator.java @@ -1,6 +1,7 @@ package com.h2; import java.text.DecimalFormat; +import com.h2.Utilities; public class MortgageCalculator { private long loanAmount; @@ -39,9 +40,9 @@ public String toString() { } public static void main(String[] args) { - long loanAmount = Long.parseLong(args[0]); - int termsInYears = Integer.parseInt(args[1]); - float annualRate = Float.parseFloat(args[2]); + long loanAmount = Utilities.getLongValue(args[0]); + int termsInYears = Utilities.getIntValue(args[1]); + float annualRate = Utilities.getFloatValue(args[2]); MortgageCalculator calculator = new MortgageCalculator(loanAmount, termsInYears, annualRate); diff --git a/src/main/java/com/h2/Utilities.java b/src/main/java/com/h2/Utilities.java new file mode 100644 index 00000000..a2e488cd --- /dev/null +++ b/src/main/java/com/h2/Utilities.java @@ -0,0 +1,37 @@ +package com.h2; + +public class Utilities { + public static long getLongValue(String in) { + long out = Long.MIN_VALUE; + try { + out = Long.parseLong(in); + } + catch (NumberFormatException e) { + new IllegalArgumentException(in + " cannot be converted into a 'long' value. Exiting program"); + } + return out; + } + + public static int getIntValue(String in) { + int out = Integer.MIN_VALUE; + try { + out = Integer.parseInt(in); + } + catch(NumberFormatException e) { + new IllegalArgumentException(in + " cannot be converted into a 'int' value. Exiting program."); + } + return out; + } + + public static float getFloatValue(String in) { + float out = Float.MIN_VALUE; + try { + out = Float.parseFloat(in); + } + catch(NumberFormatException e) { + new IllegalArgumentException(in + " cannot be converted into a 'float' value. Exiting program."); + } + return out; + } + +} From 966767e4285da7311a3d979ed50a4586f1c4d978 Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 13:17:56 -0400 Subject: [PATCH 13/14] module 6 --- src/main/java/com/h2/Utilities.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/h2/Utilities.java b/src/main/java/com/h2/Utilities.java index a2e488cd..47cbcc4e 100644 --- a/src/main/java/com/h2/Utilities.java +++ b/src/main/java/com/h2/Utilities.java @@ -7,7 +7,7 @@ public static long getLongValue(String in) { out = Long.parseLong(in); } catch (NumberFormatException e) { - new IllegalArgumentException(in + " cannot be converted into a 'long' value. Exiting program"); + throw new IllegalArgumentException(in + " cannot be converted into a 'long' value. Exiting program"); } return out; } @@ -18,7 +18,7 @@ public static int getIntValue(String in) { out = Integer.parseInt(in); } catch(NumberFormatException e) { - new IllegalArgumentException(in + " cannot be converted into a 'int' value. Exiting program."); + throw new IllegalArgumentException(in + " cannot be converted into a 'int' value. Exiting program."); } return out; } @@ -29,7 +29,7 @@ public static float getFloatValue(String in) { out = Float.parseFloat(in); } catch(NumberFormatException e) { - new IllegalArgumentException(in + " cannot be converted into a 'float' value. Exiting program."); + throw new IllegalArgumentException(in + " cannot be converted into a 'float' value. Exiting program."); } return out; } From 1c2ffcc6e25b53215bdafb03d5453ad3b5af50cd Mon Sep 17 00:00:00 2001 From: ivwu22 Date: Mon, 27 Sep 2021 13:18:51 -0400 Subject: [PATCH 14/14] module 6 --- src/main/java/com/h2/Utilities.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/h2/Utilities.java b/src/main/java/com/h2/Utilities.java index 47cbcc4e..86f4a48a 100644 --- a/src/main/java/com/h2/Utilities.java +++ b/src/main/java/com/h2/Utilities.java @@ -7,7 +7,7 @@ public static long getLongValue(String in) { out = Long.parseLong(in); } catch (NumberFormatException e) { - throw new IllegalArgumentException(in + " cannot be converted into a 'long' value. Exiting program"); + throw new IllegalArgumentException(in + " cannot be converted into a 'long' value. Exiting program."); } return out; }