Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在字符串中每一个或两个字符后插入空格_Java_Math_Spacing_Infix Notation - Fatal编程技术网

Java 在字符串中每一个或两个字符后插入空格

Java 在字符串中每一个或两个字符后插入空格,java,math,spacing,infix-notation,Java,Math,Spacing,Infix Notation,我需要编写代码来更正用户输入。输入是中缀形式的数学表达式。 为了使计算正确,我需要将每个操作数与运算符隔开 return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 "); 你能帮我写一个能提供以下预期结果的方法吗 预期输入:13*21-5+33 预期产出:13*21-5+33 我所做的研究:我只能找出如何在字符串中的每个字符之间添加空格,而这对于计算具有两位数值的表达式是行不通的。Ie:13*21-5+33 谢谢此解决

我需要编写代码来更正用户输入。输入是中缀形式的数学表达式。 为了使计算正确,我需要将每个操作数与运算符隔开

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
你能帮我写一个能提供以下预期结果的方法吗

预期输入:13*21-5+33 预期产出:13*21-5+33

我所做的研究:我只能找出如何在字符串中的每个字符之间添加空格,而这对于计算具有两位数值的表达式是行不通的。Ie:13*21-5+33


谢谢

此解决方案规范化了每个运算符周围的空白

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");

return expr.replaceAll(“(?使用正则表达式查找数字,然后用空格环绕:

string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last

我可以使用简单的字符串处理机制来实现这一点,但这仍然需要我至少5到7行代码。如果有人发布单行正则表达式解决方案,我会很高兴。我得到java.lang.IndexOutOfBoundsException:使用这些行时没有组1。抱歉,忘记了参数。请参见编辑。或者,使用$0而不使用参数。非常感谢我试图实现的最初功能是,如果用户忘记添加空格,那么检查用户是否添加空格的最佳方法是什么?如果用户忘记添加空格,我只需要添加空格them@NullPointerException使用我的第二种解决方案。此解决方案仅在缺少空格的运算符周围插入空格。编辑:现在为n规范化空间,在需要时添加,并消除多余的空间。我想我发现了一个错误。该解决方案消除了中间两个运算符之间的空白示例输出:输入中缀表达式2*3-10/4更正的中缀:2*3-10/4输入中缀表达式5+2*6-1更正的中缀:5+2*6-1输入中缀表达式2*3-10/4更正的中缀CTE中缀:2*3-10/4正如您所看到的,中间运算符周围没有添加空格。不过,其余的中缀效果很好。比仅用于数字的公认答案更优雅!