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); + } + +}