问题描述
为if和else的所有组合添加了return语句,仍然缺少return语句错误。下面是代码:
public int searchInsert(int[] nums,int target) {
for(int i=0;i<nums.length;i++){
if(nums[i] <= target){
if(nums[i] == target)
return i;
else
return i+1;
}
else
return i;
}
}
解决方法
两个return语句都在if构造内。 for循环之外的主块中没有返回。
,从语法上讲,这可能会起作用,但是在编译时,编译器期望for循环之外的return语句。即使它是“返回null”,也很好。
,您似乎很困惑。您粘贴的代码没有任何作用。具体来说,由于通过“ for”的每条路径都返回,因此此for循环将分析nums [0],这就是它要做的一切:如果nums [0]等于或大于目标,则返回0,并且如果不是,则返回1。
javac无法编译此代码,因为您的代码没有说明如果nums为空应该返回什么。您添加了不应该的退货。大概您想要的是摆脱最后的else return i;
部分,然后在最底部的return nums.length;
处添加(这是问题的答案:如果nums数组是完全为空,还是所有元素都高于目标?