我想询问以下代码,特别是第7行的代码。这是使用CodingBat AP-1>分数在增加,读起来像这个
"给定一组分数,如果每个分数都等于或大于前一个分数,则返回true。数组的长度将为2或更大">
下面的解决方案是正确的,但如果我将行7从"0"改为"0";return false"至";score=false"该方法返回另一个不正确的结果。
请告诉我";return false"以及";score=false"为什么会发生这种情况
public boolean scoresIncreasing(int[] scores) {
boolean score = false;
for(int i = 0; i < scores.length-1; i++){
if(scores[i+1] >= scores[i]){
score = true;
}else {
return false;
}
}
return score;
}
提前感谢您的回答。
这只是因为;return false"在第7行中,您将提前退出方法,并得到正确的结果,正如算法所暗示的那样。
若你们只是给分数赋值为false,你们会继续循环,所以在某些情况下,结果会变得无效(只是因为你们可能会用true重新赋值(。
-
好吧,因为
return false
会停止执行for循环,并在计数器的分数值小于上一个分数值时,立即将值返回到调用scoresIncreasing
函数的位置。 -
而当您使用
score=false
时,for循环会贯穿整个数组,然后仅在数组的最后一个元素大于或小于其前一个值的条件下返回true
或false