我制作了一个应用程序,允许从中缀到后缀表达式转换为实数(包括负数)。除了我在第一个上放一个负数然后我把另一个数减去时,它的效果很好。例如-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}}删除所有空格
答案 0 :(得分:2)
第二个if语句中的此部分(ch == input.charAt(0))
应替换为(j == 0)
。否则,如果输入也以ch == '-'
开头,它将在'-'
时返回true。