【发布时间】:2014-03-02 04:22:58
【问题描述】:
我尝试将我的中缀添加到后缀代码中,它可以在没有大括号的情况下工作,但是当我尝试包含用于解释大括号的部分时,它会崩溃,这是代码的主要部分:
for (i=0; i<characters.length; i++)
{
if (characters[i]=='*' || characters[i]=='/' || characters[i]=='+' || characters[i]=='-' || characters[i]=='(' || characters[i]==')'){
if (postfix.empty() && characters[i]!=')')
postfix.push(characters[i]);
else if (!postfix.empty()){
if (characters[i]=='(')
postfix.push(characters[i]);
if (characters[i]=='*' || characters[i]=='/')
priority2=1;
if (characters[i]=='+' || characters[i]=='-')
priority2=0;
if (characters[i]==')'){
while (postfix.peek()!='(') //loop until we see the closing bracket
System.out.print(postfix.pop()); //pop everything till we see the closing bracket
postfix.pop(); //to pop the bracket
}
if (!postfix.empty())
peeked=postfix.peek();
if (peeked=='*' || peeked=='/')
priority=1;
if (peeked=='+' || peeked=='-')
priority=0;
if (priority2>priority)
postfix.push(characters[i]);
else{
while (!postfix.empty())
System.out.print(postfix.pop());
postfix.push(characters[i]);
}
}
}
else
System.out.print(characters[i]);
}
while (!postfix.empty())
System.out.print(postfix.pop());
任何帮助将不胜感激。当涉及到大括号时,它会断裂。
【问题讨论】:
-
你应该真的调试你自己的代码。
-
我试过了..我经历了很多次..我不明白为什么即使我弹出括号(在打印之前)它仍然会打印出来
-
下载并使用调试器。
-
代码没有错误..跟流程有关
-
程序员必须能够调试自己的错误。当您要工作时,如何发布所有代码并询问“嘿,我的代码中的错误是什么”。想想这个错误可能来自哪里并在它之前破坏。还有,为什么不用switch case呢?
标签: java stack postfix-notation infix-operator