代码检查每个if语句吗?

时间:2017-03-28 06:18:46

标签: java arrays eclipse performance if-statement

所以我正在练习过去的谷歌代码堵塞问题(顺便说一句,如果你还不知道,它是在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'。如果我写这样的语句也不好吗? 任何帮助都是值得赞赏的。如果这对你来说太棒了,那么

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

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

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

7 个答案:

答案 0 :(得分:2)

由于您尚未使用elsecontinuebreak或其他内容来阻止控件在前一个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的影响(除非第一个引发异常)。但是:

if

现在第二个else是第一个if for (/*....*/) { if (condition1) { System.out.println("Condition1"); continue; } if (condition2) { System.out.println("Condition2"); } } 子句的一部分,所以只评估第一个if的条件是否为假。

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

continue

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

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

答案 1 :(得分:0)

到目前为止你尝试了什么?你至少调试它来回答你的问题吗? ifif-else语句之间存在差异。 If-else会经历所有条件并将检查,直到它找到条件为true。另一方面,程序将检查多个if语句,无论其中一个或全部是否为真。

答案 2 :(得分:0)

您有单独的if语句,因此它将执行每个if语句。 如果您使用if-then-else语句之类的东西,它将执行,直到if语句为true然后退出。 在if-then和if-then-else语句上查看此链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

答案 3 :(得分:0)

您必须在问题中加上else if(array[b]==0&&done0=false),因为您只将一个数组比较为function asyncGreet() { var deferred = $q.defer(); var postData = { department: $scope.voteData.department, group: $scope.voteData.group }; $http.post('/admin/r_candidate', postData) .success(function (response) { $scope.voteData.candidates = response.data.candidateInfos; deferred.resolve(); });); return deferred.promise; } var promise = asyncGreet(); promise.then(function() { console.log($scope.voteData); }

答案 4 :(得分:0)

您的问题的答案是肯定的,每次if语句都将在循环中进行测试,无论先前if测试的结果如何。

您提出的第二个问题无法在所提出的抽象背景下回答。而且,我认为这个问题需要一个意见。

答案 5 :(得分:0)

答案是肯定的,它将检查每个if语句。原因很简单,在条件评估为真后,您不会脱离循环。

如果你想在条件评估为真后退出循环,你应该写:

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

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

答案 6 :(得分:-1)

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