Java中的反向波兰符号。检查不应在字符串数组中的任何符号或字符(正则表达式)
我试图找出这段代码不起作用的原因,因为符号“156154152-3+-”应该不会引发异常。在这种情况下,是否有更好的方法使用正则表达式?当我在没有手动处理异常的情况下实际运行我的解释函数时,结果是正确的,一切都很好。但对于本练习,需要进行此类异常处理。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
代码如下:
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-下面的答案对你有用吗?很乐意帮忙!