【问题标题】:does code check every if statement? [closed]代码会检查每个 if 语句吗? [关闭]
【发布时间】:2017-03-28 06:18:46
【问题描述】:

所以我正在练习过去的谷歌代码堵塞问题(顺便说一句,如果你还不知道的话,它是在 4 月 7 日),我编写了这段代码,其中我放置了多个 if 语句。 看起来像这样:

for(int b=0;b<length;b++)
                        {
                           if(array[b]==1 && done1==false)
                           {
                              done1=true;

                           }

                           if(array[b]==2 && done2==false)
                           {
                              done2=true;
                           }

                             if(array[b]==3 && done3==false)
                           {
                              done3=true;
                           }

                           if(array[b]==4 && done4==false)
                           {
                              done4=true;
                           }

                           if(array[b]==5 && done5==false)
                           {
                              done5=true;
                           }

                           if(array[b]==6 && done6==false)
                           {
                              done6=true;
                           }

                           if(array[b]==7 && done7==false)
                           {
                              done7=true;

                           }

                           if(array[b]==8 && done8==false)
                           {
                              done8=true;

                           }

                           if(array[b]==9 && done9==false)
                           {
                              done9=true;

                           }

                           if(array[b]==0 && done0==false)
                           {
                              done0=true;

                           }

                           if(done0==true && done1==true && done2==true && done3==true && done4==true && done5==true && done6==true && done7==true && done8==true && done9==true)
                           {
                               System.out.println("Case"+" "+"#"+(K-T) + ":"+G);
                               break;
                           }



}

我的问题是它会检查每个“if”语句还是只检查满足条件的第一个“if”。如果我写这样的 if 语句也很糟糕吗? 任何帮助表示赞赏。对不起,如果这对你来说太菜鸟问题了

如果您需要更多详细信息,请告诉我。谢谢!

编辑: 每个人似乎都有这样的印象,即一旦条件满足,我需要程序退出循环。我不。我希望它检查每一个条件并采取相应的行动。 对于上下文: 有一个数字 N,我需要检查 N,2N,3N.... 是否包含所有数字并打印最后一个数字,这将完成数字集。所以我将数字分开并将它们放在一个数组中并检查与for loop

最后我很抱歉没有调试。我是初学者,我想我应该问问专业人士。

【问题讨论】:

  • 为什么不调试一下看看呢?你会从经验中学到更多,而不是通过提问
  • 使用 IDE 内置的调试器来单步调试代码并查看。使用调试器不是高级技能;这是初学者早期需要的基本技能,因此他们可以探索这样的问题。另外:请参阅教程以进一步了解 if 的工作原理。
  • 谢谢@T.J.Crowder 我会试试的。

标签: java arrays eclipse performance if-statement


【解决方案1】:

因为您没有使用elsecontinuebreak 或其他东西来防止控制在前一个if 之后流向下一个if,所以每一个都被评估。

更简单的情况:

if (condition1) {
    System.out.println("Condition1");
}
if (condition2) {
    System.out.println("Condition2");
}

第二个if 不受第一个影响(除非第一个导致抛出异常)。但是:

if (condition1) {
    System.out.println("Condition1");
}
else if (condition2) {
    System.out.println("Condition2");
}

现在第二个if 是第一个ifelse 子句的一部分,因此只有在第一个if 的条件为假时才会评估它。

您的代码处于循环中,因此中断正常控制流的另一个示例:

for (/*....*/) {
    if (condition1) {
        System.out.println("Condition1");
        continue;
    }
    if (condition2) {
        System.out.println("Condition2");
    }
}

那里,由于第一个if的块包含continue,它跳转到循环迭代的末尾并开始下一个,如果第一个if的条件为真,我们最终会跳过第二。 (break 也是如此。)

我建议使用 IDE 中内置的调试器来单步调试代码,看看这些东西是如何工作的。使用调试器不是高级技能;这是初学者早期需要的基本技能,因此他们可以探索这样的问题。此外,我建议阅读一些教程和/或 Java 书籍以了解流控制的基础知识。

【讨论】:

    【解决方案2】:

    到目前为止,您尝试过什么?您是否至少对其进行了调试以回答您的问题? ifif-else 声明之间存在差异。 if-else 将遍历所有条件并检查直到找到条件为true。另一方面,程序将检查多个 if 语句,无论其中一个或全部为真。

    【讨论】:

      【解决方案3】:

      您有单独的 if 语句,因此它将执行每个 if 语句。 如果你使用了类似 if-then-else 语句,它会一直执行到 if 语句为真然后退出。 检查 if-then 和 if-then-else 语句的链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

      【讨论】:

        【解决方案4】:

        您必须将else if(array[b]==2&amp;&amp;done2=false) 放入您的问题中,因为您只将一个数组与else if(array[b]==0&amp;&amp;done0=false) 进行比较

        【讨论】:

          【解决方案5】:

          您的问题的答案是肯定的,每次循环都会测试每个 if 语句,而不管之前任何 if 测试的结果如何。

          您的第二个问题无法在所呈现的抽象上下文中得到回答。此外,我相信这个问题是在征求意见。

          【讨论】:

            【解决方案6】:

            答案是肯定的,它会检查每一个 if 语句。原因很简单,在条件被评估为 true 后,您并没有跳出循环。

            如果你想在一个条件为真后跳出循环,你应该写:

            if(array[b]==1 && done1==false)
            {
              done1=true;
              break; // or continue; if you want to continue on to the next loop
            }
            

            另一方面,您的代码似乎过于复杂。我不确定你想要完成什么。

            【讨论】:

              【解决方案7】:

              由于不同的 if 语句彼此不相关,因此将检查所有 if 语句。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-04-09
                • 2020-12-10
                • 2021-11-14
                • 1970-01-01
                • 2014-09-30
                • 1970-01-01
                • 2018-10-09
                • 1970-01-01
                相关资源
                最近更新 更多