而循环在java中并没有停止

而循环在java中并没有停止,java,Java,我正在使用一个堆栈来填充声明的变量。它应该弹出其中的每个元素,直到它到达{或}。但是,当我使用stack.peek().equals(“{”)或stack.peek().equals(“}”)时,它并不是真的 我使用了.peek()来查看发生了什么,它确实识别了“{”或“}” 尽管有while循环,它仍然会在while循环中运行。其中一个表达式始终为true。尝试将|替换为&&de Morgans Law将帮助您解决此问题。您对表达式进行了OR运算,这意味着如果您得到“}”,则正确的表达式将变

我正在使用一个堆栈来填充声明的变量。它应该弹出其中的每个元素,直到它到达{}。但是,当我使用
stack.peek().equals(“{”)
stack.peek().equals(“}”)
时,它并不是真的

我使用了.peek()来查看发生了什么,它确实识别了“{”或“}”


尽管有while循环,它仍然会在while循环中运行。

其中一个表达式始终为true。尝试将
|
替换为
&&
de Morgans Law将帮助您解决此问题。您对表达式进行了OR运算,这意味着如果您得到“}”,则正确的表达式将变成!false是真的,这反过来又使while循环永远持续下去。将其更改为&&谢谢,它成功了
while(!tempVariableStack.peek().toString().equals("}") || !tempVariableStack.peek().toString().equals("{"))
{
    System.out.println(variableStack.push(tempVariableStack.pop().toString()).toString());
}