Java中的反向波兰符号。检查不应在字符串数组中的任何符号或字符(正则表达式)

Java中的反向波兰符号。检查不应在字符串数组中的任何符号或字符(正则表达式),java,exception,postfix-notation,Java,Exception,Postfix Notation,我试图找出这段代码不起作用的原因,因为符号“156154152-3+-”应该不会引发异常。在这种情况下,是否有更好的方法使用正则表达式?当我在没有手动处理异常的情况下实际运行我的解释函数时,结果是正确的,一切都很好。但对于本练习,需要进行此类异常处理。 代码如下: public class RegexTest { public static void main(String[] arg) { boolean b = check_notation("156 1

我试图找出这段代码不起作用的原因,因为符号“156154152-3+-”应该不会引发异常。在这种情况下,是否有更好的方法使用正则表达式?当我在没有手动处理异常的情况下实际运行我的解释函数时,结果是正确的,一切都很好。但对于本练习,需要进行此类异常处理。
代码如下:


public class RegexTest {
    public static void main(String[] arg) {

        boolean b = check_notation("156 154 152 - 3 + -");
        System.out.println(b);
    }

    public static boolean check_notation(String pol){

        pol = pol.trim();
        String[] tokens = pol.split("\\s+");

        for (String r : tokens) {
            if (!(r.matches("-[0-9]*") || r.matches("[0-9]*") || r == "/" || r == "*" || r == "-" || r == "+")) {
                throw new RuntimeException("There are symbols that are not allowed.");
            }
        }

        return true;
    }
}

@搜索查找。。。r、 特殊字符正则表达式检查需要matches()。还有需要在+和*符号正则表达式之前加前缀,以避免出现悬空的元字符异常。
请使用以下正则表达式条件

if(!(r.matches(“-[0-9]*”)| | r.matches([0-9]*”)| | | r.matches(“/”)| |
r、 匹配(“\\*”)\r.matches(“-”)\r.matches(“\\+”){
抛出新的RuntimeException(“存在不允许的符号”);
}

这是否回答了您的问题?几天前,我在另一段代码中犯了同样的错误。旧习惯。谢谢!它现在似乎起作用了。@searchfind-下面的答案对你有用吗?很乐意帮忙!