From b3f3cdcc2771135f570fba1c422d0695b7df6cb2 Mon Sep 17 00:00:00 2001 From: Linda Li Date: Sat, 25 Jun 2022 15:16:51 -0400 Subject: [PATCH 01/16] Add main logic --- pom.xml | 4 ++ .../scientificcalculator/Calculator.java | 28 +++++++++++ .../scientificcalculator/Console.java | 11 +++-- .../scientificcalculator/MainApplication.java | 8 +--- .../scientificcalculator/Operation.java | 48 +++++++++++++++++++ 5 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java create mode 100644 src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java diff --git a/pom.xml b/pom.xml index e7cb4f6..709a27c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,10 @@ com.zipcodewilmington scientific_calculator 1.0-SNAPSHOT + + 18 + 18 + \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java new file mode 100644 index 0000000..312e97e --- /dev/null +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -0,0 +1,28 @@ +package com.zipcodewilmington.scientificcalculator; + +public class Calculator { + + public static void run() { + + boolean calcOn = true; + + double displayVal = 0.0; + + System.out.println("Current value: " + displayVal); + + while (calcOn == true) { + String s = Console.getStringInput("Enter the operation you wish to perform: "); + + if (s.equals("exit")) break; + else if (s.equals("clear")) displayVal = 0.0; + else if (s.equals("+")) displayVal = Operation.twoNumOp("+", displayVal); + else if (s.equals("-")) displayVal = Operation.twoNumOp("-", displayVal); + else { + System.out.println("Invalid operation, please enter help for a list of operations"); + continue; + } + + System.out.println("Current value: " + displayVal); + } + } +} diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 83f0e97..0ef7e81 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -17,16 +17,19 @@ public static void println(String output, Object... args) { public static String getStringInput(String prompt) { Scanner scanner = new Scanner(System.in); - println(prompt); + print(prompt); String userInput = scanner.nextLine(); return userInput; } - public static Integer getIntegerInput(String prompt) { - return null; + public static Integer getIntegerInput(String prompt) { return null; } public static Double getDoubleInput(String prompt) { - return null; + Scanner scanner = new Scanner(System.in); + print(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..053a780 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -6,12 +6,6 @@ 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."); - - 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); + Calculator.run(); } } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java new file mode 100644 index 0000000..121925a --- /dev/null +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -0,0 +1,48 @@ +package com.zipcodewilmington.scientificcalculator; + +import java.sql.SQLOutput; + +public class Operation { + public static double twoNumOp(String operation, double displayVal) { + double num1 = 0, num2 = 0, result = 0; + + // Scan first number and store + String s1 = Console.getStringInput("Enter the first number to perform operation (leave blank to use current value): "); + if (s1.equals("")) num1 = displayVal; + else { + try { + // Try to parse the user input into a double + num1 = Double.parseDouble(s1); + } catch (NumberFormatException e){ + System.out.println("You did not input a valid, number. The number has been set to the default value of 0."); + } + } + + // Scan second number and store + String s2 = Console.getStringInput("Enter the second number to perform operation (leave blank to use current value): "); + if (s2.equals("")) num2 = displayVal; + else { + try { + // Try to parse the user input into a double + num2 = Double.parseDouble(s2); + } catch (NumberFormatException e){ + System.out.println("You did not input a valid, number. The number has been set to the default value of 0."); + } + } + + // Perform the operation + if (operation.equals("+")) result = add(num1, num2); + else if (operation.equals("-")) result = subtract(num1, num2); + + + return result; + } + + public static double add(double num1, double num2) { + return num1 + num2; + } + + public static double subtract(double num1, double num2) { + return num1 - num2; + } +} From 070224e947c705608045a50a75728c64531a780c Mon Sep 17 00:00:00 2001 From: Linda Li Date: Sat, 25 Jun 2022 15:27:05 -0400 Subject: [PATCH 02/16] Testing --- .../com/zipcodewilmington/scientificcalculator/Calculator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index 312e97e..d1896ea 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -23,6 +23,7 @@ public static void run() { } System.out.println("Current value: " + displayVal); + System.out.println("test"); } } } From da58dde1a876e8133c8ed379ea3f1770d69c8660 Mon Sep 17 00:00:00 2001 From: Linda Li Date: Sat, 25 Jun 2022 16:58:40 -0400 Subject: [PATCH 03/16] Multiplication and division added --- .../scientificcalculator/Calculator.java | 15 ++++++----- .../scientificcalculator/Operation.java | 27 +++++++++++++++---- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index d1896ea..c9dd7a9 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -11,19 +11,22 @@ public static void run() { System.out.println("Current value: " + displayVal); while (calcOn == true) { - String s = Console.getStringInput("Enter the operation you wish to perform: "); + String operator = Console.getStringInput("Enter the operation you wish to perform: "); + + if (operator.equals("exit")) break; + else if (operator.equals("clear")) displayVal = 0.0; + else if (operator.equals("+")) displayVal = Operation.twoNumOp("+", displayVal); + else if (operator.equals("-")) displayVal = Operation.twoNumOp("-", displayVal); + else if (operator.equals("*")) displayVal = Operation.twoNumOp("*", displayVal); + else if (operator.equals("/")) displayVal = Operation.twoNumOp("/", displayVal); + else if (operator.equals("^")) displayVal = Operation.twoNumOp("^", displayVal); - if (s.equals("exit")) break; - else if (s.equals("clear")) displayVal = 0.0; - else if (s.equals("+")) displayVal = Operation.twoNumOp("+", displayVal); - else if (s.equals("-")) displayVal = Operation.twoNumOp("-", displayVal); else { System.out.println("Invalid operation, please enter help for a list of operations"); continue; } System.out.println("Current value: " + displayVal); - System.out.println("test"); } } } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 121925a..469c567 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -1,8 +1,9 @@ package com.zipcodewilmington.scientificcalculator; - +import java.lang.Math; import java.sql.SQLOutput; public class Operation { + // Two number operations public static double twoNumOp(String operation, double displayVal) { double num1 = 0, num2 = 0, result = 0; @@ -14,7 +15,7 @@ public static double twoNumOp(String operation, double displayVal) { // Try to parse the user input into a double num1 = Double.parseDouble(s1); } catch (NumberFormatException e){ - System.out.println("You did not input a valid, number. The number has been set to the default value of 0."); + System.out.println("You did not input a valid number. The number has been set to the default value of 0."); } } @@ -26,23 +27,39 @@ public static double twoNumOp(String operation, double displayVal) { // Try to parse the user input into a double num2 = Double.parseDouble(s2); } catch (NumberFormatException e){ - System.out.println("You did not input a valid, number. The number has been set to the default value of 0."); + System.out.println("You did not input a valid number. The number has been set to the default value of 0."); } } // Perform the operation if (operation.equals("+")) result = add(num1, num2); else if (operation.equals("-")) result = subtract(num1, num2); - + else if (operation.equals("*")) result = multiply(num1, num2); + else if (operation.equals("/")) result = divide(num1, num2); + else if (operation.equals("^")) result = power(num1, num2); return result; } + // Addition public static double add(double num1, double num2) { return num1 + num2; } - + // Subtraction public static double subtract(double num1, double num2) { return num1 - num2; } + // Multiplication + public static double multiply(double num1, double num2) { + return num1 * num2; + } + // Division + public static double divide(double num1, double num2) { + return num1 / num2; + } + // Variable exponentiation + public static double power(double num1, double num2) { + return Math.pow(num1, num2); + } + } From 9dafa714830595b13cbe672eef1301bf3a32ca87 Mon Sep 17 00:00:00 2001 From: Linda Li Date: Sat, 25 Jun 2022 18:54:45 -0400 Subject: [PATCH 04/16] added oneNumOp --- .../scientificcalculator/Calculator.java | 4 +++ .../scientificcalculator/Operation.java | 25 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index c9dd7a9..e48dd42 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -20,6 +20,7 @@ public static void run() { else if (operator.equals("*")) displayVal = Operation.twoNumOp("*", displayVal); else if (operator.equals("/")) displayVal = Operation.twoNumOp("/", displayVal); else if (operator.equals("^")) displayVal = Operation.twoNumOp("^", displayVal); + else if (operator.equals("sq")) displayVal = Operation.oneNumOp("sq", displayVal); else { System.out.println("Invalid operation, please enter help for a list of operations"); @@ -28,5 +29,8 @@ public static void run() { System.out.println("Current value: " + displayVal); } + + } + } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 469c567..084b8d7 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -41,7 +41,26 @@ public static double twoNumOp(String operation, double displayVal) { return result; } - // Addition + public static double oneNumOp(String operation, double displayVal) { + double n = 0, result = 0; + + String s1 = Console.getStringInput("Enter the number to perform operation (leave blank to use current value): "); + if (s1.equals("")) n = displayVal; + else { + try { + // Try to parse the user input into a double + n = Double.parseDouble(s1); + } catch (NumberFormatException e){ + System.out.println("You did not input a valid number. The number has been set to the default value of 0."); + } + } + if (operation.equals("sq")) result = sq(n); + else if (operation.equals("sqrt")) result = 5; + + return result; + } + + // Addition public static double add(double num1, double num2) { return num1 + num2; } @@ -61,5 +80,9 @@ public static double divide(double num1, double num2) { public static double power(double num1, double num2) { return Math.pow(num1, num2); } + // Square + public static double sq(double n) { + return n * n; + } } From b820250d07001675cf18f76acc185c87705837fb Mon Sep 17 00:00:00 2001 From: Nick Choi <96934316+nickchoi10@users.noreply.github.com> Date: Sat, 25 Jun 2022 20:04:41 -0400 Subject: [PATCH 05/16] added trig log --- .../scientificcalculator/Calculator.java | 12 +++++++++++- .../scientificcalculator/Operation.java | 13 ++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index e48dd42..f426753 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -21,7 +21,17 @@ public static void run() { else if (operator.equals("/")) displayVal = Operation.twoNumOp("/", displayVal); else if (operator.equals("^")) displayVal = Operation.twoNumOp("^", displayVal); else if (operator.equals("sq")) displayVal = Operation.oneNumOp("sq", displayVal); - + else if (operator.equals("sqrt")) displayVal = Operation.oneNumOp("sqrt", displayVal); + else if (operator.equals("sin")) displayVal = Operation.oneNumOp("sin", displayVal); + else if (operator.equals("cos")) displayVal = Operation.oneNumOp("cos", displayVal); + else if (operator.equals("tan")) displayVal = Operation.oneNumOp("tan", displayVal); + else if (operator.equals("arcsin")) displayVal = Operation.oneNumOp("arcsin", displayVal); + else if (operator.equals("arccos")) displayVal = Operation.oneNumOp("arccos", displayVal); + else if (operator.equals("arctan")) displayVal = Operation.oneNumOp("arctan", displayVal); + else if (operator.equals("log")) displayVal = Operation.oneNumOp("log", displayVal); + else if (operator.equals("invlog")) displayVal = Operation.oneNumOp("invlog", displayVal); + else if (operator.equals("nlog")) displayVal = Operation.oneNumOp("nlog", displayVal); + else if (operator.equals("invnlog")) displayVal = Operation.oneNumOp("invnlog", displayVal); else { System.out.println("Invalid operation, please enter help for a list of operations"); continue; diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 084b8d7..338f782 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -55,7 +55,18 @@ public static double oneNumOp(String operation, double displayVal) { } } if (operation.equals("sq")) result = sq(n); - else if (operation.equals("sqrt")) result = 5; + else if (operation.equals("sqrt")) result = Math.sqrt(n); + else if (operation.equals("log")) result = Math.log10(n); + else if (operation.equals("invlog")) result = Math.pow(10,n); + else if (operation.equals("nlog")) result = Math.log(n); + else if (operation.equals("invnlog")) result = Math.exp(n); + else if (operation.equals("sin")) result = Math.sin(n); + else if (operation.equals("cos")) result = Math.cos(n); + else if (operation.equals("tan")) result = Math.tan(n); + else if (operation.equals("arcsin")) result = Math.asin(n); + else if (operation.equals("arccos")) result = Math.acos(n); + else if (operation.equals("arctan")) result = Math.atan(n); + return result; } From 215f5581226f68991eac249dc926e6b2ede158dc Mon Sep 17 00:00:00 2001 From: Nick Choi <96934316+nickchoi10@users.noreply.github.com> Date: Sat, 25 Jun 2022 20:34:26 -0400 Subject: [PATCH 06/16] factorial,trig,log function --- .../scientificcalculator/Calculator.java | 1 + .../scientificcalculator/Operation.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index f426753..fb8e76a 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -32,6 +32,7 @@ public static void run() { else if (operator.equals("invlog")) displayVal = Operation.oneNumOp("invlog", displayVal); else if (operator.equals("nlog")) displayVal = Operation.oneNumOp("nlog", displayVal); else if (operator.equals("invnlog")) displayVal = Operation.oneNumOp("invnlog", displayVal); + else if (operator.equals("!")) displayVal = Operation.factorial("!", displayVal); else { System.out.println("Invalid operation, please enter help for a list of operations"); continue; diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 338f782..2071c73 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -70,6 +70,25 @@ public static double oneNumOp(String operation, double displayVal) { return result; } + //Factorial function + public static double factorial(String operation, double displayVal) { + double n = 0; + String s1 = Console.getStringInput("Enter the number to perform operation (leave blank to use current value): "); + if (s1.equals("")) n = displayVal; + else { + try { + // Try to parse the user input into a double + n = Double.parseDouble(s1); + } catch (NumberFormatException e){ + System.out.println("You did not input a valid number. The number has been set to the default value of 0."); + } + } + long result = 1; + for (int i = 1; i <= n; i++) { + result = result * i; + } + return result; + } // Addition public static double add(double num1, double num2) { From 8b33c705286caa5c91b427fabf6127f6a7a878b8 Mon Sep 17 00:00:00 2001 From: Linda Li Date: Sat, 25 Jun 2022 21:02:23 -0400 Subject: [PATCH 07/16] asdsadasd --- .../com/zipcodewilmington/scientificcalculator/Console.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 83f0e97..45d0ceb 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -1,4 +1,4 @@ -package com.zipcodewilmington.scientificcalculator; +package com.zipcodewilmington.sciegintificcalculator; import java.util.Scanner; From 55eaeeace47282ce3ff05096df4b49c37eaf6c7e Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sat, 25 Jun 2022 21:25:35 -0400 Subject: [PATCH 08/16] fixed package --- .../com/zipcodewilmington/scientificcalculator/Console.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index f4ea7db..0ef7e81 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -1,4 +1,4 @@ -package com.zipcodewilmington.sciegintificcalculator; +package com.zipcodewilmington.scientificcalculator; import java.util.Scanner; From a44f8a075558c0ad35392bb7148a7221247f0f1f Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sat, 25 Jun 2022 22:53:10 -0400 Subject: [PATCH 09/16] display mode --- .../scientificcalculator/Calculator.java | 27 +++++++++++++++++-- .../scientificcalculator/Operation.java | 1 - 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index fb8e76a..2aee454 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -8,6 +8,8 @@ public static void run() { double displayVal = 0.0; + String displayMode = "decimal"; + System.out.println("Current value: " + displayVal); while (calcOn == true) { @@ -15,6 +17,7 @@ public static void run() { if (operator.equals("exit")) break; else if (operator.equals("clear")) displayVal = 0.0; + else if (operator.equals("switch")) displayMode = switchDisplayMode(displayMode); else if (operator.equals("+")) displayVal = Operation.twoNumOp("+", displayVal); else if (operator.equals("-")) displayVal = Operation.twoNumOp("-", displayVal); else if (operator.equals("*")) displayVal = Operation.twoNumOp("*", displayVal); @@ -38,10 +41,30 @@ public static void run() { continue; } - System.out.println("Current value: " + displayVal); + printDisplay(displayMode, displayVal); } + } - + public static String switchDisplayMode(String currentMode) { + // Have the user enter the mode they wish to switch to + String s = Console.getStringInput("Enter the display mode you wish to switch to (leave blank to auto-rotate): "); + if (s.equals("decimal")) return "decimal"; + else if (s.equals("hexadecimal")) return "hexadecimal"; + else if (s.equals("octal")) return "octal"; + else if (s.equals("binary")) return "binary"; + // If the user enters blank or enters an invalid display mode, then rotate between the display modes + else { + if (currentMode.equals("decimal")) return "hexadecimal"; + else if (currentMode.equals("hexadecimal")) return "binary"; + else if (currentMode.equals("binary")) return "octal"; + else return "decimal"; + } } + public static void printDisplay(String displayMode, double displayVal) { + if (displayMode.equals("octal")) System.out.println("Current value: " + Long.toOctalString(Double.doubleToRawLongBits(displayVal))); + else if (displayMode.equals("hexadecimal")) System.out.println("Current value: " + Double.toHexString(displayVal)); + else if (displayMode.equals("binary")) System.out.println("Current value: " + Long.toBinaryString(Double.doubleToRawLongBits(displayVal))); + else System.out.println("Current value: " + displayVal); + } } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 2071c73..1aeffe8 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -67,7 +67,6 @@ public static double oneNumOp(String operation, double displayVal) { else if (operation.equals("arccos")) result = Math.acos(n); else if (operation.equals("arctan")) result = Math.atan(n); - return result; } //Factorial function From 60120ba14d6c50dfed9e2f58029feed65c136550 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sat, 25 Jun 2022 22:59:03 -0400 Subject: [PATCH 10/16] spacing --- .../com/zipcodewilmington/scientificcalculator/Operation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 1aeffe8..44e3cbd 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -69,7 +69,7 @@ public static double oneNumOp(String operation, double displayVal) { return result; } - //Factorial function + // Factorial function public static double factorial(String operation, double displayVal) { double n = 0; String s1 = Console.getStringInput("Enter the number to perform operation (leave blank to use current value): "); From 416bd05cf031fadd74d2a92e32ff6b9e87259b31 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sat, 25 Jun 2022 23:03:33 -0400 Subject: [PATCH 11/16] edited message on mainapplication --- .../com/zipcodewilmington/scientificcalculator/Console.java | 2 ++ .../zipcodewilmington/scientificcalculator/MainApplication.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 0ef7e81..80d7be0 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -25,11 +25,13 @@ public static String getStringInput(String prompt) { public static Integer getIntegerInput(String prompt) { return null; } + /* public static Double getDoubleInput(String prompt) { Scanner scanner = new Scanner(System.in); print(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 053a780..11118d5 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -5,7 +5,7 @@ */ public class MainApplication { public static void main(String[] args) { - Console.println("Welcome to my calculator!"); + Console.println("Welcome to the calculator made by Linda, Nick and Randy! Please enter help for a list of operations."); Calculator.run(); } } From b276d171dfb105ee48200c9906da9eba2533ac78 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sat, 25 Jun 2022 23:25:53 -0400 Subject: [PATCH 12/16] git push --- .../zipcodewilmington/scientificcalculator/MainApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 11118d5..05e1104 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -9,3 +9,5 @@ public static void main(String[] args) { Calculator.run(); } } + +// Trying to git push to master \ No newline at end of file From 104930d60951a47234ffe6bc18dfb7efc16d6477 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sun, 26 Jun 2022 12:22:52 -0400 Subject: [PATCH 13/16] added the inverse of the number on the display --- .../scientificcalculator/Calculator.java | 1 + .../scientificcalculator/MainApplication.java | 6 ++---- .../scientificcalculator/Operation.java | 12 ++++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index 2aee454..ed40202 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -25,6 +25,7 @@ public static void run() { else if (operator.equals("^")) displayVal = Operation.twoNumOp("^", displayVal); else if (operator.equals("sq")) displayVal = Operation.oneNumOp("sq", displayVal); else if (operator.equals("sqrt")) displayVal = Operation.oneNumOp("sqrt", displayVal); + else if (operator.equals("inverse")) displayVal = Operation.oneNumOp("inverse", displayVal); else if (operator.equals("sin")) displayVal = Operation.oneNumOp("sin", displayVal); else if (operator.equals("cos")) displayVal = Operation.oneNumOp("cos", displayVal); else if (operator.equals("tan")) displayVal = Operation.oneNumOp("tan", displayVal); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 05e1104..0a9aafd 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -5,9 +5,7 @@ */ public class MainApplication { public static void main(String[] args) { - Console.println("Welcome to the calculator made by Linda, Nick and Randy! Please enter help for a list of operations."); + Console.println("Welcome to the calculator made by Linda, Nick and Randy! Please enter help for a list of operations. The default display mode is decimal."); Calculator.run(); } -} - -// Trying to git push to master \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 44e3cbd..972dc8d 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -56,6 +56,7 @@ public static double oneNumOp(String operation, double displayVal) { } if (operation.equals("sq")) result = sq(n); else if (operation.equals("sqrt")) result = Math.sqrt(n); + else if (operation.equals("inverse")) result = inverse(n); else if (operation.equals("log")) result = Math.log10(n); else if (operation.equals("invlog")) result = Math.pow(10,n); else if (operation.equals("nlog")) result = Math.log(n); @@ -91,27 +92,38 @@ public static double factorial(String operation, double displayVal) { // Addition public static double add(double num1, double num2) { + return num1 + num2; } // Subtraction public static double subtract(double num1, double num2) { + return num1 - num2; } // Multiplication public static double multiply(double num1, double num2) { + return num1 * num2; } // Division public static double divide(double num1, double num2) { + return num1 / num2; } // Variable exponentiation public static double power(double num1, double num2) { + return Math.pow(num1, num2); } // Square public static double sq(double n) { + return n * n; } + // Inverse of the number + public static double inverse(double n) { + + return 1 / n; + } } From 757e3c19367b4f6c3ae431be6ea64218fa74863c Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sun, 26 Jun 2022 13:04:33 -0400 Subject: [PATCH 14/16] added message for each time display mode is switched --- .../scientificcalculator/Calculator.java | 6 +++++- .../scientificcalculator/Console.java | 13 ++----------- .../scientificcalculator/Operation.java | 6 ++++++ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index ed40202..7902e20 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -17,7 +17,10 @@ public static void run() { if (operator.equals("exit")) break; else if (operator.equals("clear")) displayVal = 0.0; - else if (operator.equals("switch")) displayMode = switchDisplayMode(displayMode); + else if (operator.equals("switch")) { + displayMode = switchDisplayMode(displayMode); + System.out.println("The display mode is now " + displayMode + "."); + } else if (operator.equals("+")) displayVal = Operation.twoNumOp("+", displayVal); else if (operator.equals("-")) displayVal = Operation.twoNumOp("-", displayVal); else if (operator.equals("*")) displayVal = Operation.twoNumOp("*", displayVal); @@ -26,6 +29,7 @@ public static void run() { else if (operator.equals("sq")) displayVal = Operation.oneNumOp("sq", displayVal); else if (operator.equals("sqrt")) displayVal = Operation.oneNumOp("sqrt", displayVal); else if (operator.equals("inverse")) displayVal = Operation.oneNumOp("inverse", displayVal); + else if (operator.equals("invert")) displayVal = Operation.oneNumOp("invert", displayVal); else if (operator.equals("sin")) displayVal = Operation.oneNumOp("sin", displayVal); else if (operator.equals("cos")) displayVal = Operation.oneNumOp("cos", displayVal); else if (operator.equals("tan")) displayVal = Operation.oneNumOp("tan", displayVal); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 80d7be0..085e0f2 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -22,16 +22,7 @@ public static String getStringInput(String prompt) { return userInput; } - public static Integer getIntegerInput(String prompt) { return null; + public static Integer getIntegerInput(String prompt) { + return null; } - - /* - public static Double getDoubleInput(String prompt) { - Scanner scanner = new Scanner(System.in); - print(prompt); - double userInput = scanner.nextDouble(); - return userInput; - } - */ - } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 972dc8d..b7cb013 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -57,6 +57,7 @@ public static double oneNumOp(String operation, double displayVal) { if (operation.equals("sq")) result = sq(n); else if (operation.equals("sqrt")) result = Math.sqrt(n); else if (operation.equals("inverse")) result = inverse(n); + else if (operation.equals("invert")) result = invert(n); else if (operation.equals("log")) result = Math.log10(n); else if (operation.equals("invlog")) result = Math.pow(10,n); else if (operation.equals("nlog")) result = Math.log(n); @@ -125,5 +126,10 @@ public static double inverse(double n) { return 1 / n; } + // Invert the sign of the number on the display (switch between positive and negative) + public static double invert(double n) { + + return n * -1; + } } From 804f0e2b976da50f235240c4d436e66ee59ca093 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sun, 26 Jun 2022 15:38:51 -0400 Subject: [PATCH 15/16] added custom feature help command --- .../scientificcalculator/Calculator.java | 34 +++++++++++++++++-- .../scientificcalculator/Operation.java | 4 +-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index 7902e20..2ebf93e 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -14,9 +14,9 @@ public static void run() { while (calcOn == true) { String operator = Console.getStringInput("Enter the operation you wish to perform: "); - if (operator.equals("exit")) break; else if (operator.equals("clear")) displayVal = 0.0; + else if (operator.equals("help")) printHelp(); else if (operator.equals("switch")) { displayMode = switchDisplayMode(displayMode); System.out.println("The display mode is now " + displayMode + "."); @@ -38,8 +38,8 @@ else if (operator.equals("switch")) { else if (operator.equals("arctan")) displayVal = Operation.oneNumOp("arctan", displayVal); else if (operator.equals("log")) displayVal = Operation.oneNumOp("log", displayVal); else if (operator.equals("invlog")) displayVal = Operation.oneNumOp("invlog", displayVal); - else if (operator.equals("nlog")) displayVal = Operation.oneNumOp("nlog", displayVal); - else if (operator.equals("invnlog")) displayVal = Operation.oneNumOp("invnlog", displayVal); + else if (operator.equals("ln")) displayVal = Operation.oneNumOp("ln", displayVal); + else if (operator.equals("e")) displayVal = Operation.oneNumOp("e", displayVal); else if (operator.equals("!")) displayVal = Operation.factorial("!", displayVal); else { System.out.println("Invalid operation, please enter help for a list of operations"); @@ -72,4 +72,32 @@ public static void printDisplay(String displayMode, double displayVal) { else if (displayMode.equals("binary")) System.out.println("Current value: " + Long.toBinaryString(Double.doubleToRawLongBits(displayVal))); else System.out.println("Current value: " + displayVal); } + // Method that prints out a list of operations with the operation 'help' + public static void printHelp() { + System.out.println("Here are the list of operations:"); + System.out.println("Addition: + "); + System.out.println("Subtraction: - "); + System.out.println("Multiplication: * "); + System.out.println("Division: / "); + System.out.println("Square: sq "); + System.out.println("Square root: sqrt "); + System.out.println("Variable Exponentiation: ^ "); + System.out.println("Inverse: inverse "); + System.out.println("Invert: invert "); + System.out.println("Sine: sin "); + System.out.println("Cosine: cos "); + System.out.println("Tangent: tan "); + System.out.println("Inverse Sine: arcsin "); + System.out.println("Inverse Cosine: arccos "); + System.out.println("Inverse Tangent: arctan "); + System.out.println("Log: log "); + System.out.println("Inverse Logarithm: invlog "); + System.out.println("Natural Logarithm: ln "); + System.out.println("Inverse Natural Logarithm: e "); + System.out.println("Factorial: ! "); + System.out.println("Switch between display mode: switch "); + System.out.println("Four display modes: binary, octal, decimal, hexadecimal "); + System.out.println("Clear the display: clear "); + System.out.println("Turn off the calculator: exit "); + } } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index b7cb013..4edd9e3 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -60,8 +60,8 @@ public static double oneNumOp(String operation, double displayVal) { else if (operation.equals("invert")) result = invert(n); else if (operation.equals("log")) result = Math.log10(n); else if (operation.equals("invlog")) result = Math.pow(10,n); - else if (operation.equals("nlog")) result = Math.log(n); - else if (operation.equals("invnlog")) result = Math.exp(n); + else if (operation.equals("ln")) result = Math.log(n); + else if (operation.equals("e")) result = Math.exp(n); else if (operation.equals("sin")) result = Math.sin(n); else if (operation.equals("cos")) result = Math.cos(n); else if (operation.equals("tan")) result = Math.tan(n); From a4077ab8216eeb339a89bcb4c56d2dba04c9f954 Mon Sep 17 00:00:00 2001 From: "Meilin Li (Linda)" Date: Sun, 26 Jun 2022 16:39:52 -0400 Subject: [PATCH 16/16] help features + error message --- .../scientificcalculator/Calculator.java | 2 +- .../scientificcalculator/MainApplication.java | 5 ++--- .../scientificcalculator/Operation.java | 22 ++++++++++++++----- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java index 2ebf93e..daf86fd 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java @@ -72,7 +72,7 @@ public static void printDisplay(String displayMode, double displayVal) { else if (displayMode.equals("binary")) System.out.println("Current value: " + Long.toBinaryString(Double.doubleToRawLongBits(displayVal))); else System.out.println("Current value: " + displayVal); } - // Method that prints out a list of operations with the operation 'help' + // Method that prints out a list of operations public static void printHelp() { System.out.println("Here are the list of operations:"); System.out.println("Addition: + "); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 0a9aafd..b8a1ee0 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -1,8 +1,7 @@ package com.zipcodewilmington.scientificcalculator; -/** - * Created by leon on 2/9/18. - */ +// Group 5: Linda Li, Nick Choi, Randy Reina + public class MainApplication { public static void main(String[] args) { Console.println("Welcome to the calculator made by Linda, Nick and Randy! Please enter help for a list of operations. The default display mode is decimal."); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java index 4edd9e3..df90d4f 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java @@ -35,7 +35,7 @@ public static double twoNumOp(String operation, double displayVal) { if (operation.equals("+")) result = add(num1, num2); else if (operation.equals("-")) result = subtract(num1, num2); else if (operation.equals("*")) result = multiply(num1, num2); - else if (operation.equals("/")) result = divide(num1, num2); + else if (operation.equals("/")) result = divide(num1, num2, displayVal); else if (operation.equals("^")) result = power(num1, num2); return result; @@ -55,7 +55,7 @@ public static double oneNumOp(String operation, double displayVal) { } } if (operation.equals("sq")) result = sq(n); - else if (operation.equals("sqrt")) result = Math.sqrt(n); + else if (operation.equals("sqrt")) result = sqrt(n, displayVal); else if (operation.equals("inverse")) result = inverse(n); else if (operation.equals("invert")) result = invert(n); else if (operation.equals("log")) result = Math.log10(n); @@ -107,9 +107,14 @@ public static double multiply(double num1, double num2) { return num1 * num2; } // Division - public static double divide(double num1, double num2) { - - return num1 / num2; + // We pass displayVal as a method as a way to store displayVal in "memory" + // This way, if an error occurs, we can set the current value displayed on the calculator to the displayVal + public static double divide(double num1, double num2, double displayVal) { + + if (num2 == 0.0) { + System.out.println("Error: cannot divide by zero, please try again."); + return displayVal; + } else return num1 / num2; } // Variable exponentiation public static double power(double num1, double num2) { @@ -132,4 +137,11 @@ public static double invert(double n) { return n * -1; } + public static double sqrt(double n, double displayVal) { + if (n < 0.0) { + System.out.println("Error: cannot take the square root of a negative number, please try again."); + return displayVal; + } else return Math.sqrt(n); + } + }