【问题标题】:Java while(condition doesn't reach)?? WhyJava while(条件未达到)??为什么
【发布时间】:2021-06-24 02:00:33
【问题描述】:

为什么会这样

while(word.charAt(left) == word.charAt(right) && left >= 0 && right < word.length()){
            left--;
            right++;
        }

它在 while 条件下说“left >= 0 && right

 while(left >= 0 && right < word.length() && word.charAt(left) == word.charAt(right)){
            left--;
            right++;

        }

条件满足。 while(循环条件)有顺序吗???

【问题讨论】:

  • 因为当您以相反的方式执行此操作时,您会访问无效索引,然后检查它们是否有效。如果您考虑一下,您可能会意识到为什么它不起作用。
  • 运算符 && 和 ||通常称为短路运算符,因为如果第一个操作数足以证明该值,则它不会评估第二个操作数。例如,在a &amp;&amp; b 中,如果 a 为 false,则永远不会计算 b。
  • 好的,谢谢你的解释!

标签: java loops while-loop


【解决方案1】:

顺序确实很重要,因为条件是从左到右检查的。您收到该消息是因为如果前一个条件的计算结果为真,那么这两个条件

left >= 0 && right < word.length()

将始终评估为真。您可能想要后者(因为您想要检查所有条件)。

【讨论】:

  • 抱歉,要评估为真,必须在and 操作中评估这两个参数。但是,如果第一个条件的计算结果为 false,则不会计算第二个条件,因为 false &amp;&amp; ? 的计算结果为 false。
  • 没错,但我的意思是,如果先前的条件为真,这两个条件将始终评估为真。例如,如果要检查字符串的第一个字符,则不必在检查完字符后检查它是否为空。您需要先检查它是否为空,然后再检查字符。
猜你喜欢
  • 2021-03-21
  • 2012-10-29
  • 1970-01-01
  • 2011-07-22
  • 2021-08-17
  • 1970-01-01
  • 2022-08-04
  • 2015-05-31
  • 2016-03-30
相关资源
最近更新 更多