当前位置: 首页 > 面试题库 >

java.util.regex.PatternSyntaxException:在索引0 +附近晃来晃去的元字符'+'

李谦
2023-03-14
问题内容

启动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"};


    /**
     * 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;
    }

问题答案:

正则表达式中有保留字符,您应该对这些字符进行换码以实现所需的功能。例如,您不能使用String.split("+"),而必须使用String.split("\\+")

正确的运算符为:

String[] operators = new String[] {"-","\\+","/","\\*","x","\\^","X"};


 类似资料:
  • 问题内容: 从命令行运行Java程序时,我遇到了问题。我在Linux系统中安装了openjdk-6-jdk,但仍然显示与openjdk-7-jdk有关的错误。 最初,我在系统中安装了jdk 7,但后来我将其删除,但在运行应用程序时仍然遇到问题。 运行cammand之后 它显示警告如下 update-alternatives:将以最佳选择进行更新。 链接组java中只有一种选择:无需 配置。 我该怎

  • 问题内容: 我正在尝试替换我的弦上的所有方括号。 这是我的程序 但是我越来越 有人可以告诉我如何更换所有方括号吗? 问题答案: 采用正则表达式模式,但是您根本不需要正则表达式。您可以使用: 或者,您 也可以根据需要 使用正则表达式,一次性替换两者: 这就是说“用空字符串替换集合中的任何字符(开方括号,闭方括号)。这是为了使集合中的方括号转义。 请注意,您需要使用(或)的结果-字符串在Java中是不

  • 这是我在一个在线连接4游戏的结尾处使用的动画: 他们将被动画化的顺序是什么?如何定义?因为如果我这样放的话,最左边的硬币首先会被激活,然后会有一个延迟,然后其他3个硬币就会弹出...我知道你可能需要一些更多的代码,但这部分680锁客户端代码(全部由我编写),我不想把它全部放在这里… 提前谢谢!

  • 我正在尝试替换字符串中的所有方括号。 这是我的节目 但我正在 有谁能告诉我如何更换所有方括号吗??

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 一般来说,我是一名新程序员,如果这个问题有一定的基础,请原谅我。 该程序的目标是简单地计算“最佳体重”,并在运行时在第35行的a和b字符串比较中不断抛出异常。我试图删除逻辑运算符,但这似乎仍然不是问题所在。我错在哪里?

  • 本文向大家介绍jQuery晃动层特效实现方法,包括了jQuery晃动层特效实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery晃动层特效实现方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的jQuery程序设计有所帮助。