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..c9dd7a9
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Calculator.java
@@ -0,0 +1,32 @@
+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 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);
+
+ 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..469c567
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Operation.java
@@ -0,0 +1,65 @@
+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;
+
+ // 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);
+ 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);
+ }
+
+}