所以我正在练习过去的谷歌代码堵塞问题(顺便说一句,如果你还不知道,它是在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
。
最后我很抱歉没有调试。我是初学者,我想我只是问专业人士。
答案 0 :(得分:2)
由于您尚未使用else
或continue
或break
或其他内容来阻止控件在前一个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)
到目前为止你尝试了什么?你至少调试它来回答你的问题吗?
if
与if-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语句。