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 == '+' || perChar == '-' || perChar == '*' || perChar == '/'){
            newStr+= " "+perChar+" ";
            continue;
        }
        str+=perChar;

    }

最佳答案

在此处使用您的代码可以解决您的问题,只需检查一个操作数前面是否有另一个操作数,如果是这种情况,则不添加空格。

    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);

如果您想实现一个计算器,您应该考虑将操作数存储在数据结构中以便于访问,例如数组。

并考虑将表达式从中缀转换为 postfix因为这可能对您有用。

关于java - Java中用空格分隔运算符和操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37222013/

相关文章:

java - 查看 java 文件时,Sonarqube 陷入无限循环

javax.mail.MessagingException : Could not connect to SMTP host

Java:new、inheritance和objects number

java - 从 Java 结果集中读取 Unicode 文本

java - 使用 InSequence 注释时出现 arquillian UnsupportedOperationException

java - 如何将日期对象的长值转换为日期

java - 指令重新排序如何导致并发问题

java - Apache CXF geronimo-servlet_3.0_spec-1.0.jar - 未加载具有 Tomcat servlet jar 的 jar

java - 在 eclipse SWT 中执行代码之前 setVisible()

java - 如何对抽象类进行单元测试 : extend with stubs?