java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +

16 浏览
0 Comments

java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +

当我启动UI时,会出现错误,导致该代码在标题中向我抛出错误。对于我的其他运算符号,它是有效的,所以我真的不知道发生了什么。我不想发布所有的代码,所以如果这不够的话,你可以在我的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"};
    /**
     * 检查文本区域中使用的符号,然后应用正确的计算方法。
     * 修复:允许使用多个符号,并根据PEMDAS返回结果。
     *
     * @param nums
     *
     * @return 运算符,或错误
     */
    public String findSymbol(String nums) {
        for (String operator : operators) {
            if (nums.contains(operator)) {
                return operator;
            }
        }
        return "输入无效";
    }
    /**
     * 输入方法,将用户输入从文本区域中获取,并应用正确的计算方法
     *
     * @param nums - 将输入存储为字符串,然后将其转换为整数,再转换回字符串以在文本区域中打印
     *
     * @return - 计算结果作为字符串
     */
    public String input(String nums){
        String operator = findSymbol(nums);
        if (operator == null){
            System.out.println("输入无效");
        }
        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("无效的运算符");
        }
        return result;
    }
}

0