From 519f0f3f57cef0edcc3a336bee1cbe48fcae5ffc Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 12:23:52 -0500 Subject: [PATCH 01/12] Have a basic calc that works with common equations but only allows 2 numbers --- pom.xml | 10 ++- .../scientificcalculator/Console.java | 40 +++++++++- .../scientificcalculator/MainApplication.java | 75 ++++++++++++++++--- .../TestMainApplication.java | 32 ++++++++ 4 files changed, 144 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index b92b052..5abfe4b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.zipcodewilmington @@ -48,6 +48,12 @@ 4.12 test + + + eu.tortitas.utils + lib + 1.2.0 + diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 83f0e97..f374443 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -5,8 +5,36 @@ /** * Created by leon on 2/9/18. */ + + public class Console { + public static int add(int a, int b) { + int sum = a + b; + System.out.println(sum); + return sum; + } + + public static int subtract(int a, int b) { + int difference = a - b; + System.out.println(difference); + return difference; + } + + public static int multiply(int a, int b) { + int product = a * b; + System.out.println(product); + return product; + } + + public static int divide(int a, int b) { + int quotient = a / b; + System.out.println(quotient); + return quotient; + } + + + public static void print(String output, Object... args) { System.out.printf(output, args); } @@ -23,10 +51,18 @@ public static String getStringInput(String prompt) { } public static Integer getIntegerInput(String prompt) { - return null; + Scanner scanner = new Scanner(System.in); + println(prompt); + Integer userInput = scanner.nextInt(); + return userInput; } public static Double getDoubleInput(String prompt) { - return null; + Scanner scanner = new Scanner(System.in); + println(prompt); + Double userInput = scanner.nextDouble(); + return userInput; } } + + diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 5f42132..61d341f 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -1,17 +1,74 @@ package com.zipcodewilmington.scientificcalculator; +import java.lang.reflect.Array; +import java.util.Scanner; + +import utils.Prompt; + /** * Created by leon on 2/9/18. */ + + public class MainApplication { - public static void main(String[] args) { - Console.println("Welcome to my calculator!"); - String s = Console.getStringInput("Enter a string"); - Integer i = Console.getIntegerInput("Enter an integer"); - Double d = Console.getDoubleInput("Enter a double."); + + public static int calculate(int a, int b, String operator) { + int result = 5; + switch (operator) { + case "+": + result = Console.add(a, b); + break; + case "-": + result = Console.subtract(a, b); + break; + case "*": + result = Console.multiply(a, b); + break; + case "/": + result = Console.divide(a, b); + break; + default: + System.out.println("Invalid operator"); + } + return result; + } - Console.println("The user input %s as a string", s); - Console.println("The user input %s as a integer", i); - Console.println("The user input %s as a d", d); + + // Console.println(""); + // String s = Console.getStringInput("Enter a string"); + // Integer i = Console.getIntegerInput("Enter an integer"); + // Double d = Console.getDoubleInput("Enter a double"); + // } + + + // public static void main(String[] args, Object userInput, Object prompt, String operator) { + + // if (userInput instanceof String) { + // System.out.println(); + // String userInputStr = Console.getStringInput(prompt); + // Console.println(userInputStr); + // } else if (userInput instanceof Integer) { + // System.out.println(); + // Integer userInputInt = Console.getIntegerInput(prompt); + // Console.println(userInputInt); + // } else if (userInput instanceof Double) { + // System.out.println(); + // Double userInputDbl = Console.getDoubleInput(prompt); + // Console.println(userInputDbl); + // } + // else { + // System.out.println("Invalid input type"); + // } + // System.out.println(prompt); + // } + + public static void main(String[] args) { + String prompt = "Enter an operator (+, -, *, /): "; + String operatorInput = Console.getStringInput(prompt); + Integer num1Input = Console.getIntegerInput("Enter the first number: "); + Integer num2Input = Console.getIntegerInput("Enter the second number: "); + int result = calculate(num1Input, num2Input, operatorInput); + Console.println("Result: %d", result); + } -} +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java b/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java index 94e8d98..451aac9 100644 --- a/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java +++ b/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java @@ -3,5 +3,37 @@ /** * Created by leon on 2/9/18. */ + +class Prompt { + private String prompt; + private String userInput; + + public Prompt(String prompt, String userInput) { + this.prompt = prompt; + this.userInput = userInput; + } + + public String getPrompt() { + return prompt; + } + + public String getUserInput() { + return userInput; + } +} public class TestMainApplication { + + + public static int add(int a, int b) { + int sum = a + b; + System.out.println(sum); + return sum; + } + + public static int multiply(int a, int b) { + int product = a * b; + System.out.println(product); + return product; + } + } From 6467dbbba4ee31a4d8a020506f02b7fc639500af Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 12:33:51 -0500 Subject: [PATCH 02/12] Basic Calc w Add, Subtract, Multiply and Divide --- .../scientificcalculator/MainApplication.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 61d341f..9d11de3 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -1,10 +1,5 @@ package com.zipcodewilmington.scientificcalculator; -import java.lang.reflect.Array; -import java.util.Scanner; - -import utils.Prompt; - /** * Created by leon on 2/9/18. */ From 2c46499aa50fb60caac3563d957c496a945da602 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 13:28:10 -0500 Subject: [PATCH 03/12] Test Pull Request --- .../java/com/zipcodewilmington/scientificcalculator/Console.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index f374443..5b76fcd 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -66,3 +66,4 @@ public static Double getDoubleInput(String prompt) { } + From a5c198adadb912185a21daae2ae49b880f63d004 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 14:49:57 -0500 Subject: [PATCH 04/12] Created a calculator that is interactive w the result --- .../scientificcalculator/Console.java | 1 - .../scientificcalculator/MainApplication.java | 16 ++++++++++++++++ .../TestMainApplication.java | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 5b76fcd..f374443 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -66,4 +66,3 @@ public static Double getDoubleInput(String prompt) { } - diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 9d11de3..bde04e7 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -58,12 +58,28 @@ public static int calculate(int a, int b, String operator) { // } public static void main(String[] args) { + boolean isRunning = true; + String prompt = "Enter an operator (+, -, *, /): "; String operatorInput = Console.getStringInput(prompt); Integer num1Input = Console.getIntegerInput("Enter the first number: "); Integer num2Input = Console.getIntegerInput("Enter the second number: "); + int result = calculate(num1Input, num2Input, operatorInput); Console.println("Result: %d", result); + + while (isRunning) { + String again = Console.getStringInput("Use result in new equation? (yes/no): "); + if (again.equalsIgnoreCase("no")) { + isRunning = false; + } else { + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /): "); + Integer newNum = Console.getIntegerInput("Enter a number: "); + result = calculate(result, newNum, newOperator); + Console.println("Result: %d", result); + } } + Console.println("Thank you for using the calculator!"); +} } \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java b/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java index 451aac9..850bebf 100644 --- a/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java +++ b/src/test/java/com/zipcodewilmington/scientific_calculator/TestMainApplication.java @@ -30,10 +30,22 @@ public static int add(int a, int b) { return sum; } + public static int subtract(int a, int b) { + int difference = a - b; + System.out.println(difference); + return difference; + } + public static int multiply(int a, int b) { int product = a * b; System.out.println(product); return product; } + public static int divide(int a, int b) { + int quotient = a / b; + System.out.println(quotient); + return quotient; + } + } From 89103594b53c242f85b45be71102472ca462ffa8 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 16:19:37 -0500 Subject: [PATCH 05/12] Seamless calc with reusable results including sqrt and sqr --- .../scientificcalculator/Console.java | 40 ++++++++-- .../scientificcalculator/MainApplication.java | 80 +++++++++---------- 2 files changed, 70 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index f374443..c49e953 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -9,30 +9,54 @@ public class Console { - public static int add(int a, int b) { - int sum = a + b; + public static double add(double a, double b) { + double sum = a + b; System.out.println(sum); return sum; } - public static int subtract(int a, int b) { - int difference = a - b; + public static double subtract(double a, double b) { + double difference = a - b; System.out.println(difference); return difference; } - public static int multiply(int a, int b) { - int product = a * b; + public static double multiply(double a, double b) { + double product = a * b; System.out.println(product); return product; } - public static int divide(int a, int b) { - int quotient = a / b; + public static double divide(double a, double b) { + double quotient = a / b; System.out.println(quotient); return quotient; } + public static double square(double a) { + double result = a * a; + System.out.println(result); + return result; + } + + public static double squareRoot(double a) { + double result = Math.sqrt(a); + System.out.println(result); + return result; + } + + public static double inverse(double a) { + double result = 1 / a; + System.out.println(result); + return result; + } + + public static double invert(double a) { + double result = -a; + System.out.println(result); + return result; + } + public static void print(String output, Object... args) { diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index bde04e7..94ef4e2 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -7,8 +7,8 @@ public class MainApplication { - public static int calculate(int a, int b, String operator) { - int result = 5; + public static double calculate(double a, double b, String operator) { + double result = 0; switch (operator) { case "+": result = Console.add(a, b); @@ -22,51 +22,36 @@ public static int calculate(int a, int b, String operator) { case "/": result = Console.divide(a, b); break; + case "sqrt": + result = (double) Console.squareRoot(a); + break; + case "sqr": + result = (double) Console.square(a); + break; default: System.out.println("Invalid operator"); } return result; } - - // Console.println(""); - // String s = Console.getStringInput("Enter a string"); - // Integer i = Console.getIntegerInput("Enter an integer"); - // Double d = Console.getDoubleInput("Enter a double"); - // } - - - // public static void main(String[] args, Object userInput, Object prompt, String operator) { - - // if (userInput instanceof String) { - // System.out.println(); - // String userInputStr = Console.getStringInput(prompt); - // Console.println(userInputStr); - // } else if (userInput instanceof Integer) { - // System.out.println(); - // Integer userInputInt = Console.getIntegerInput(prompt); - // Console.println(userInputInt); - // } else if (userInput instanceof Double) { - // System.out.println(); - // Double userInputDbl = Console.getDoubleInput(prompt); - // Console.println(userInputDbl); - // } - // else { - // System.out.println("Invalid input type"); - // } - // System.out.println(prompt); - // } public static void main(String[] args) { boolean isRunning = true; + double result = 0.0; - String prompt = "Enter an operator (+, -, *, /): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr): "; String operatorInput = Console.getStringInput(prompt); - Integer num1Input = Console.getIntegerInput("Enter the first number: "); - Integer num2Input = Console.getIntegerInput("Enter the second number: "); - - int result = calculate(num1Input, num2Input, operatorInput); - Console.println("Result: %d", result); + if (operatorInput.equals("sqrt") || operatorInput.equals("sqr")) { + Double numInput = Console.getDoubleInput("Enter a number: "); + result = calculate(numInput, 0, operatorInput); + Console.println("Result: %f", result); + } else { + + Double num1Input = Console.getDoubleInput("Enter the first number: "); + Double num2Input = Console.getDoubleInput("Enter the second number: "); + result = calculate(num1Input, num2Input, operatorInput); + Console.println("Result: %f", result); + } while (isRunning) { String again = Console.getStringInput("Use result in new equation? (yes/no): "); @@ -74,12 +59,23 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /): "); - Integer newNum = Console.getIntegerInput("Enter a number: "); - result = calculate(result, newNum, newOperator); - Console.println("Result: %d", result); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr): "); + + if (newOperator.equals("sqrt") || newOperator.equals("sqr")) { + result = calculate(result, 0, newOperator); + } else { + Double newNum = Console.getDoubleInput("Enter a number: "); + result = calculate(result, newNum, newOperator); + } + Console.println("Result: %f", result); } + } + Console.println("Thank you for using the calculator!"); } - Console.println("Thank you for using the calculator!"); } -} \ No newline at end of file + + +// String newOperator = Console.getStringInput("Enter an operator (+, -, *, /): "); +// Double newNum = Console.getDoubleInput("Enter a number: "); +// double newResult = calculate(result, newNum, newOperator); +// result = newResult; \ No newline at end of file From 617450791e6748aa9d651e474c19a454187cc52c Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 16:34:52 -0500 Subject: [PATCH 06/12] Added inverse, negative, log, and exponent into code --- .../scientificcalculator/Console.java | 12 ++++++++++++ .../scientificcalculator/MainApplication.java | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index c49e953..eeb5ccc 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -57,6 +57,18 @@ public static double invert(double a) { return result; } + public static double logarithm(double a) { + double result = Math.log(a); + System.out.println(result); + return result; + } + + public static double exponent(double a, double b) { + double result = Math.pow(a, b); + System.out.println(result); + return result; + } + public static void print(String output, Object... args) { diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 94ef4e2..88c0a12 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -28,6 +28,15 @@ public static double calculate(double a, double b, String operator) { case "sqr": result = (double) Console.square(a); break; + case "inv": + result = (double) Console.inverse(a); + break; + case "neg": + result = (double) Console.invert(a); + break; + case "log": + result = (double) Console.logarithm(a); + break; default: System.out.println("Invalid operator"); } @@ -39,9 +48,9 @@ public static void main(String[] args) { boolean isRunning = true; double result = 0.0; - String prompt = "Enter an operator (+, -, *, /, sqrt, sqr): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log): "; String operatorInput = Console.getStringInput(prompt); - if (operatorInput.equals("sqrt") || operatorInput.equals("sqr")) { + if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log")) { Double numInput = Console.getDoubleInput("Enter a number: "); result = calculate(numInput, 0, operatorInput); Console.println("Result: %f", result); @@ -59,9 +68,9 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr): "); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log): "); - if (newOperator.equals("sqrt") || newOperator.equals("sqr")) { + if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log")) { result = calculate(result, 0, newOperator); } else { Double newNum = Console.getDoubleInput("Enter a number: "); From a948b6f2ebf1011a63e7d11353fe02d6ef98307e Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 16:37:00 -0500 Subject: [PATCH 07/12] Added Exponent into code --- .../scientificcalculator/MainApplication.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 88c0a12..77ff5e6 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -37,6 +37,9 @@ public static double calculate(double a, double b, String operator) { case "log": result = (double) Console.logarithm(a); break; + case "exp": + result = (double) Console.exponent(a, b); + break; default: System.out.println("Invalid operator"); } @@ -48,7 +51,7 @@ public static void main(String[] args) { boolean isRunning = true; double result = 0.0; - String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp): "; String operatorInput = Console.getStringInput(prompt); if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log")) { Double numInput = Console.getDoubleInput("Enter a number: "); @@ -68,7 +71,7 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log): "); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp): "); if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log")) { result = calculate(result, 0, newOperator); From 4f5beaff0f0d5db217d74c717393fc69360b054d Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 17:10:30 -0500 Subject: [PATCH 08/12] Added Sin Cos and Tan --- .../scientificcalculator/Console.java | 18 ++++++++++++++++++ .../scientificcalculator/MainApplication.java | 17 +++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index eeb5ccc..3c43279 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -69,6 +69,24 @@ public static double exponent(double a, double b) { return result; } + public static double sine(double a) { + double result = Math.sin(a); + System.out.println(result); + return result; + } + + public static double cosine(double a) { + double result = Math.cos(a); + System.out.println(result); + return result; + } + + public static double tangent(double a) { + double result = Math.tan(a); + System.out.println(result); + return result; + } + public static void print(String output, Object... args) { diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 77ff5e6..4dba202 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -40,6 +40,15 @@ public static double calculate(double a, double b, String operator) { case "exp": result = (double) Console.exponent(a, b); break; + case "sin": + result = (double) Console.sine(a); + break; + case "cos": + result = (double) Console.cosine(a); + break; + case "tan": + result = (double) Console.tangent(a); + break; default: System.out.println("Invalid operator"); } @@ -51,9 +60,9 @@ public static void main(String[] args) { boolean isRunning = true; double result = 0.0; - String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan): "; String operatorInput = Console.getStringInput(prompt); - if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log")) { + if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log") || operatorInput.equals("exp") || operatorInput.equals("sin") || operatorInput.equals("cos") || operatorInput.equals("tan")) { Double numInput = Console.getDoubleInput("Enter a number: "); result = calculate(numInput, 0, operatorInput); Console.println("Result: %f", result); @@ -71,9 +80,9 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp): "); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan): "); - if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log")) { + if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log") || newOperator.equals("exp") || newOperator.equals("sin") || newOperator.equals("cos") || newOperator.equals("tan")) { result = calculate(result, 0, newOperator); } else { Double newNum = Console.getDoubleInput("Enter a number: "); From d574ffe4113d2ed452deab5cee7a26b7b805a40a Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 20:41:11 -0500 Subject: [PATCH 09/12] Made many changes. Inverse cossintan, memory recall and clear, current value --- .../scientificcalculator/Console.java | 20 ++++++++++ .../scientificcalculator/MainApplication.java | 40 ++++++++++++++----- 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 3c43279..2ec78a7 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -28,6 +28,10 @@ public static double multiply(double a, double b) { } public static double divide(double a, double b) { + if (b == 0) { + throw new ArithmeticException("Err"); + } + double quotient = a / b; System.out.println(quotient); return quotient; @@ -87,7 +91,23 @@ public static double tangent(double a) { return result; } + public static double inverseSine(double a) { + double result = Math.asin(a); + System.out.println(result); + return result; + } + public static double inverseCosine(double a) { + double result = Math.acos(a); + System.out.println(result); + return result; + } + + public static double inverseTangent(double a) { + double result = Math.atan(a); + System.out.println(result); + return result; + } public static void print(String output, Object... args) { System.out.printf(output, args); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 4dba202..ed7b62f 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -49,6 +49,15 @@ public static double calculate(double a, double b, String operator) { case "tan": result = (double) Console.tangent(a); break; + case "asin": + result = (double) Console.inverseSine(a); + break; + case "acos": + result = (double) Console.inverseCosine(a); + break; + case "atan": + result = (double) Console.inverseTangent(a); + break; default: System.out.println("Invalid operator"); } @@ -59,10 +68,11 @@ public static double calculate(double a, double b, String operator) { public static void main(String[] args) { boolean isRunning = true; double result = 0.0; + double memory = 0.0; - String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv): "; String operatorInput = Console.getStringInput(prompt); - if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log") || operatorInput.equals("exp") || operatorInput.equals("sin") || operatorInput.equals("cos") || operatorInput.equals("tan")) { + if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log") || operatorInput.equals("sin") || operatorInput.equals("cos") || operatorInput.equals("tan")) { Double numInput = Console.getDoubleInput("Enter a number: "); result = calculate(numInput, 0, operatorInput); Console.println("Result: %f", result); @@ -80,23 +90,31 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan): "); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv): "); - if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log") || newOperator.equals("exp") || newOperator.equals("sin") || newOperator.equals("cos") || newOperator.equals("tan")) { + if (newOperator.equals("mr")) { + result = memory; + Console.println("Memory Recall: %f", result); + } else if (newOperator.equals("cv")) { + Console.println("Memory recalled: %f", result); + } else if (newOperator.equals("mc")) { + memory = 0.0; + Console.println("Memory cleared."); + } + else if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log") || newOperator.equals("sin") || newOperator.equals("cos") || newOperator.equals("tan")) { + memory = result; result = calculate(result, 0, newOperator); - } else { + Console.println("Result: %f", result); + } + else { Double newNum = Console.getDoubleInput("Enter a number: "); + memory = result; result = calculate(result, newNum, newOperator); + Console.println("Result: %f", result); } - Console.println("Result: %f", result); } } Console.println("Thank you for using the calculator!"); } } - -// String newOperator = Console.getStringInput("Enter an operator (+, -, *, /): "); -// Double newNum = Console.getDoubleInput("Enter a number: "); -// double newResult = calculate(result, newNum, newOperator); -// result = newResult; \ No newline at end of file From 5a55f1997268a9b894da9dc2edfbd403a8fa6e77 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 21:10:40 -0500 Subject: [PATCH 10/12] Most updated code --- .../scientificcalculator/Console.java | 6 +++ .../scientificcalculator/MainApplication.java | 37 ++++++++++++++----- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 2ec78a7..13239c5 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -44,6 +44,9 @@ public static double square(double a) { } public static double squareRoot(double a) { + if (a < 0) { + throw new ArithmeticException("Err"); + } double result = Math.sqrt(a); System.out.println(result); return result; @@ -62,6 +65,9 @@ public static double invert(double a) { } public static double logarithm(double a) { + if (a <= 0) { + throw new ArithmeticException("Err"); + } double result = Math.log(a); System.out.println(result); return result; diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index ed7b62f..2e4473a 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -69,19 +69,27 @@ public static void main(String[] args) { boolean isRunning = true; double result = 0.0; double memory = 0.0; + double prevA = 0.0; + double prevB = 0.0; + String prevOperator = ""; - String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv): "; + String prompt = "Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv, mc): "; String operatorInput = Console.getStringInput(prompt); if (operatorInput.equals("sqrt") || operatorInput.equals("sqr") || operatorInput.equals("inv") || operatorInput.equals("neg") || operatorInput.equals("log") || operatorInput.equals("sin") || operatorInput.equals("cos") || operatorInput.equals("tan")) { Double numInput = Console.getDoubleInput("Enter a number: "); + prevA = numInput; + prevB = 0.0; + prevOperator = operatorInput; result = calculate(numInput, 0, operatorInput); Console.println("Result: %f", result); } else { - - Double num1Input = Console.getDoubleInput("Enter the first number: "); - Double num2Input = Console.getDoubleInput("Enter the second number: "); - result = calculate(num1Input, num2Input, operatorInput); - Console.println("Result: %f", result); + Double num1Input = Console.getDoubleInput("Enter the first number: "); + Double num2Input = Console.getDoubleInput("Enter the second number: "); + prevA = num1Input; + prevB = num2Input; + prevOperator = operatorInput; + result = calculate(num1Input, num2Input, operatorInput); + Console.println("Result: %f", result); } while (isRunning) { @@ -90,25 +98,36 @@ public static void main(String[] args) { if (again.equalsIgnoreCase("no")) { isRunning = false; } else { - String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv): "); + String newOperator = Console.getStringInput("Enter an operator (+, -, *, /, sqrt, sqr, inv, neg, log, exp, sin, cos, tan, mr, cv, mc): "); if (newOperator.equals("mr")) { result = memory; Console.println("Memory Recall: %f", result); } else if (newOperator.equals("cv")) { - Console.println("Memory recalled: %f", result); + Console.println("Current Value: %f", result); } else if (newOperator.equals("mc")) { memory = 0.0; Console.println("Memory cleared."); - } + } else if (newOperator.equals("redo")) { + Double editNum = Console.getDoubleInput("Enter a new number: "); + memory = result; + result = calculate(prevA, editNum, prevOperator); + Console.println("Result: %f", result); + } else if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator.equals("inv") || newOperator.equals("neg") || newOperator.equals("log") || newOperator.equals("sin") || newOperator.equals("cos") || newOperator.equals("tan")) { memory = result; + prevA = result; + prevB = 0.0; + prevOperator = newOperator; result = calculate(result, 0, newOperator); Console.println("Result: %f", result); } else { Double newNum = Console.getDoubleInput("Enter a number: "); memory = result; + prevA = result; + prevB = newNum; + prevOperator = newOperator; result = calculate(result, newNum, newOperator); Console.println("Result: %f", result); } From 622e2f1f7f8db975dda2910a0bf2d4aac2905df9 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 21:13:09 -0500 Subject: [PATCH 11/12] Most Updated Code --- .../zipcodewilmington/scientificcalculator/MainApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 2e4473a..ab5908f 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -133,7 +133,7 @@ else if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator. } } } - Console.println("Thank you for using the calculator!"); + Console.println("Thank you for using our calculator!"); } } From 498bf23566f0aeb26845fde6d199e39278f7a7d8 Mon Sep 17 00:00:00 2001 From: james Date: Mon, 2 Mar 2026 14:06:18 -0500 Subject: [PATCH 12/12] Test --- .../zipcodewilmington/scientificcalculator/MainApplication.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index ab5908f..e588081 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -137,3 +137,4 @@ else if (newOperator.equals("sqrt") || newOperator.equals("sqr") || newOperator. } } +// Ready to Send \ No newline at end of file