I am getting the error when I launch my UI that causes this code to spit the error at me in the title. It works for all of my other operator symbols so I am really not sure what's going on here. I didn't want to post all the code so you can find the rest if this isn't enough on my gitHub: https://github.com/jparr721/Calculator-App/tree/master/src/calculator
public class Calculation_Controls { public double A, B; private String[] operators = new String[] {"-","+","/","*","x","^","X"}; /** * Check for the symbol being used within the TextArea to then * apply the correct caculation method. * FIXME - Allow for multiple symbols to be used and have them return * FIXME - a result in accordance with PEMDAS * *@param nums * * @return operator, or error */ public String findSymbol(String nums) { for (String operator : operators) { if (nums.contains(operator)) { return operator; } } return "invalid input"; } /** * Input method to take the user input from the text area * and apply the correct calculation to it * * @param nums - Stores the input as a String which I then convert to an int * then back to a string to be printed to the TextArea * * @return - The result of the calculation as a string */ public String input(String nums){ String operator = findSymbol(nums); if (operator == null){ System.out.println("Invalid input"); } String[] split = nums.split(operator); int left = Integer.parseInt(split[0]); int right = Integer.parseInt((split[1])); String result = ""; switch (operator){ case "+": result = Double.toString(add(left, right)); break; case "-": result = Double.toString(subtract(left, right)); break; case "*": case "x": case "X": result = Double.toString(multiply(left, right)); break; case "/": result = Double.toString(divide(left, right)); break; case "^": result = Double.toString(pwr(left, right)); break; default: System.out.println("Invalid Operator"); } return result; }
There are reserved character in Regex and you should scape these character to achieve what you want. For example, you can't use String.split("+")
, you have to use String.split("\\+")
.
The correct operators would be:
String[] operators = new String[] {"-","\\+","/","\\*","x","\\^","X"};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With