【发布时间】:2021-09-19 19:58:10
【问题描述】:
我想问一下下面的代码,特别是第 7 行。 这是一个使用 CodingBat AP-1 > scoresIncreasing 的练习,内容如下
“给定一个分数数组,如果每个分数都等于或大于前一个分数,则返回 true。数组长度为 2 或更大。”
以下解决方案是正确的,但如果我将 line:7 从 "return false;" 更改为到“分数=假;”该方法返回另一个不正确的结果。
请告诉我“return 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;
}
提前感谢您的回答。
【问题讨论】:
-
在纸上仔细阅读代码,你就会明白为什么这段代码的行为与它的行为一样。此外,您可以使用调试器单步执行代码,在代码运行时检查字段的状态,这也将告诉您为什么会发生这种情况。
-
不同之处在于你在一个实例中立即从方法返回,而在另一个实例中在循环中设置变量
-
如果你将其设为
score = false;,则循环有可能不会在此处结束,并且可能会在后续迭代中使用true。 -
如果您删除了提前返回,则返回的值仅取决于最后比较的两个分数,之前的所有分数都无关紧要。