0

我制作了一个应用程序,允许将实数(包括负数)从中缀表达式转换为后缀表达式。它工作得很好,除了我在第一个数字上加上一个负数,然后我在另一个数字上加上一个负数。例如-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 之间或者它是.时,同样的事情。否则,当它是和操作数时,我将其放入其中tempoutput使用堆栈进行操作。我无法显示整个代码,它很长!有人能帮助我吗?

编辑:我这样做是input = input.replaceAll("\\s+", "");为了删除所有空格

4

1 回答 1

2

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

于 2013-03-26T15:53:04.513 回答