提问者:小点点

如何在Java中有选择地拆分负符号和减法运算符?


String [] fractionsplit = fractioninput.split("/|\\-");              // ("/|\\+"); ("\\*|\\/"); ("/"); for addition, multiplication and division respectively

    Integer num1 = Integer.parseInt(fractionsplit[0]);
    Integer den1 = Integer.parseInt(fractionsplit[1]);
    Integer num2 = Integer.parseInt(fractionsplit[2]);
    Integer den2 = Integer.parseInt(fractionsplit[3]);

线程“main”java.lang.NumberFormatException:对于输入字符串:“”在java.base/java.lang.NumberFormatException.forinputString(NumberFormatException.java:68)在java.base/java.lang.integer.parseint(integer.java:662)在java.base/java.lang.integer.parseint(integer.java:770)在assigment.additionsubtraction.subtraction(fraction.java:86)在

如何重建分割字符串输入的方式?加法运算是唯一计算出来的,减法、乘法和除法也会遇到和上面一样的错误。


共1个答案

匿名用户

你不应该为此使用split。使用split时,不能使用符号的上下文。您的多个-符号的问题需要解决上下文。

解决这个问题的一个简单而优雅的方法是使用带有捕获组的正则表达式。(https://www.tutorialspoint.com/javaregex/javaregex_capturing_groups.htm)

我很快草拟了一个可以解决您的问题的Regex(至少按照我的理解):