为什么"return false;"不等于"boolean score= false; return score;"?AP-1 >分数增加



我想询问以下代码,特别是第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循环会贯穿整个数组,然后仅在数组的最后一个元素大于或小于其前一个值的条件下返回truefalse

最新更新