From 4f5beaff0f0d5db217d74c717393fc69360b054d Mon Sep 17 00:00:00 2001 From: james Date: Sun, 1 Mar 2026 17:10:30 -0500 Subject: [PATCH 1/3] 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 2/3] 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 3/3] 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); }