使用实数对中缀进行后缀(包含负数)

时间:2013-03-26 15:40:53

标签: java

我制作了一个应用程序,允许从中缀到后缀表达式转换为实数(包括负数)。除了我在第一个上放一个负数然后我把另一个数减去时,它的效果很好。例如-1 - 2-2 + 8 - 9。它显示-1-2-2 8-9 +。它应该是-1 2 --2 8 + 9 -。当符号为-时,这肯定是个问题。当输入字符为' - '时,这是我的代码的一部分。

for (int j = 0; j < input.length(); j++) {
    char ch = input.charAt(j);
    if (ch == '-') {
                    if ((ch == input.charAt(0)) || (input.charAt(j - 1) == '(')
                            || (input.charAt(j - 1) == '-'))
                        temp = temp + ch;
                    else {
                        output = output + temp + " ";
                        temp = "";
                        gotOper(ch, 1);
                    }
                }
    else if ..
    ...
    }

当应用找到-并且它位于input中的第一个或(之后或-之后,所以这是一个负数,我将其置于临时变量。当它介于0和9之间或它是.时,同样的事情。否则,当它和操作数一起时,我将temp中的output放在input = input.replaceAll("\\s+", "");中,然后我对堆栈进行操作。我无法显示整个代码,它很长!有人能帮帮我吗?

编辑:我这样做{{1}}删除所有空格

1 个答案:

答案 0 :(得分:2)

第二个if语句中的此部分(ch == input.charAt(0))应替换为(j == 0)。否则,如果输入也以ch == '-'开头,它将在'-'时返回true。