我不能为我的生活弄清楚为什么当“turnOrder”设置为“first”时这段代码会无限循环。它似乎与“do while循环”中的“或”运算符有关。但我不知道如何正确格式化它。
{{1}}
答案 0 :(得分:0)
while ((!"first".equalsIgnoreCase(turnOrder)) || (!"second".equalsIgnoreCase(turnOrder)))
这句话永远都是真的,直到你提出一个等于IgnoreCase-s的turnOrder
值为"首先"和"第二"同时。祝你好运!也许你的意思是......
while (
!(
"first".equalsIgnoreCase(turnOrder) ||
"second".equalsIgnoreCase(turnOrder)
)
)
答案 1 :(得分:0)
当你输入“first”时它会循环,它会返回false !“first”.equalsIgnoreCase(turnOrder),但是 它回归真实 ! “第二” .equalsIgnoreCase(turnOrder))
false OR true = true,因此它将继续循环
答案 2 :(得分:0)
您应该始终将逻辑操作简化为最简单的形式。
“((!”first“.equalsIgnoreCase(turnOrder))||(!”second“.equalsIgnoreCase(turnOrder)))”
可以使用De Morgan定律简化
!(“first”.equalsIgnoreCase(turnOrder)&&"“second”.equalsIgnoreCase(turnOrder))
当然,turnOrder不能同时是“第一”和“第二”。它将始终评估为true,因此您的while循环将无限循环。