【问题标题】:Java and and or operator not workingJava and and or 运算符不起作用
【发布时间】:2015-02-26 05:43:20
【问题描述】:

当满足两个条件时,我使用以下语句跳出循环:

while (true)
    {
        if (uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4) 
                &&
                uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2)){
            break;
        }

当满足一个或两个 && 条件时,循环会中断。但是,我编写的代码仅在两个条件都为真时才中断循环。

上面的陈述有什么遗漏吗? 问候, Shei7141.

【问题讨论】:

  • 以上代码显示uAnswer1.equals(answerB4) && uAnswer2.equals(answerS1)处于AND条件
  • 在这种情况下,&& 将优先于||。 @JigarJoshi 有正确答案。
  • answerBnanswerSn 值在循环中是否保持不变?

标签: java operators conditional


【解决方案1】:

当(真) { 如果 ((uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2) || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4)) && (uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2))) 休息; }

【讨论】:

    【解决方案2】:

    用括号括起来

    if ( (uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                    || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4))
    &&
    (uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2)) )
    

    即使是HashSet 的正确答案,这样做也会很干净,也很有效

    answers1Set.contains(uAnswer1) && answers2Set.contains(uAnswer2)  
    

    【讨论】:

      【解决方案3】:

      以上代码显示 uAnswer1.equals(answerB4) && uAnswer2.equals(answerS1) 处于 AND 条件

      while (true)
          {
              if ((uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                      || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4)) 
      
                      &&
      
                      (uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2))){
                  break;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多