第一个问题:-
多重声明String myString;
第二个问题:-
字符串初始化不正确。末尾缺少双引号。从两端拆下支架和支架。
String myString = "a+b-c*d/e";
第三个问题:-
使用 String 对象而不是数组对象初始化的字符串数组。
String[] result=new String(); // Should be `new String[size]`
事实上,您不需要事先初始化数组。
第四个问题:-
String.split
采用正则表达式作为参数,您已经传递了一个数组。不管用。
Use: -
String[] result = myString.split("[-+*/]");
拆分到所有运算符上。
关于您的这一声明:-
也=, -, *, d, /
(也是一个运算符数组)分别。
我不明白你在这里想要什么。您的示例字符串不包含=
. And d
不是一个operator
。请查看是否要编辑它。
更新 : -
如果您想将运算符保留在数组中,则可以使用以下正则表达式:-
String myString= "a+b-c*d/e";
String[] result = myString.split("(?<=[-+*/])|(?=[-+*/])");
System.out.println(Arrays.toString(result));
/*** Just to see, what the two parts in the above regex print separately ***/
System.out.println(Arrays.toString(myString.split("(?<=[-+*/])")));
System.out.println(Arrays.toString(myString.split("(?=[-+*/])")));
输出 : -
[a, +, b, -, c, *, d, /, e]
[a+, b-, c*, d/, e]
[a, +b, -c, *d, /e]
(?<=...)
means look-behind assertion
, and (?=...)
means look-ahead assertion
.