Java中使用空格分隔运算符和操作数

Java中使用空格分隔运算符和操作数,java,Java,比如我有 String str = "1+2*-3/4-5" 我想格式化字符串str并将其存储到新字符串newStr 这样我的newStr的值 1 + 2 * -3 / 4 - 5 到目前为止,我所做的工作产生了这个结果 1 + 2 * - 3 / 4 - 5 使用此代码 for(int i =0; i < str.length(); i++) { perChar = str.charAt(i); if(perChar == '+' || perCha

比如我有

String str = "1+2*-3/4-5"
我想格式化字符串str并将其存储到新字符串newStr 这样我的newStr的值

1 + 2 * -3 / 4 - 5
到目前为止,我所做的工作产生了这个结果

1 + 2 * - 3 / 4 - 5
使用此代码

for(int i =0; i < str.length(); i++) {
        perChar = str.charAt(i);
        if(perChar == '+' || perChar == '-' || perChar == '*' || perChar == '/'){
            newStr+= " "+perChar+" ";
            continue;
        }
        str+=perChar;

    }
for(int i=0;i
在这里使用您的代码可以解决您的问题,只需检查一个操作数之前是否有另一个操作数,如果是这样,则不要添加空格

    String str = "1+2*-3/4-5";
    String newStr = "";

    for(int i = 0; i < str.length(); i++) {

        char perChar = str.charAt(i);

        if(perChar == '+' || perChar == '-' || perChar == '*' || perChar == '/'){
            if(str.charAt(i-1) == '+' || str.charAt(i-1) == '-' || str.charAt(i-1) == '*' || str.charAt(i-1) == '/'){
                newStr = newStr + perChar;
            } else {
                newStr = newStr + perChar + " ";
            }
        } else {
            newStr = newStr + perChar + " "; 
        }
    }
    System.out.println(newStr);
String str=“1+2*-3/4-5”;
字符串newStr=“”;
对于(int i=0;i
如果希望实现计算器,则应考虑将操作数存储在数据结构中,以便于访问,例如数组


并研究如何将表达式从中缀转换为对您有用的格式。

这里有一种方法:在代码中使用一个布尔变量,表示您希望的下一个字符是运算符还是操作数。如果您需要一个操作数,并且看到一个-符号,那么您就知道它是用于求反的。此外,请确保适当地切换布尔值。我将把实现交给您自己处理,如-3+4*5中所示,如果您知道regex,那么这将实现:
str.replaceAll(“(?”)?