java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +
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"};
in your case +
*
and ^
are treated with a special meaning, most often called as Metacharacters. String.split()
method takes a regex expression as its argument and return a String
array. To avoid treating above as a Metacharacters you need to use these escape sequences in your code "\\+"
"\\*"
"\\^"
modify your operator array like this
private String[] operators = new String[] {"-","\\+","/","\\*","x","\\^","X"};
for more detalis refere these links regex.Pattern and String.split()
you can use case String.valueOf('+');
Change: String[] split = nums.split(operator);
To this: String[] split = nums.split("\\" + operator);
edit: This will only work for standard operators, not the x or X. You'll have to change your String[] operators
declaration actually, like the other answer mentioned. Personally though, I'd do some kind of input validation and do a replace() on x
or X
to be *
instead