String express = "-3-4";
//express = "-3+4";
//express = "3+4";
//express = "3-4";
//清除空格,避免无法匹配
express = express.replaceAll(" ","");
Matcher m = Pattern.compile("(-?\\d{1,})+?(-?\\d{1,})").matcher(express);
if(m.find()){
double one = Double.parseDouble( m.group(1));
double two = Double.parseDouble( m.group(2));
System.out.println(one+two);
}
用正则就彻底一点,直接取结果计算, 正数、负数都当成一个数。
减法当作 加法 加负数就好,默认有个隐形的加号, 匹配并捕获完整的数字直接加法,不用自己在计算结果的时候写 负号。