Java 即使在每个条件中添加return语句后也会出错
为if和else的所有组合添加了return语句,但仍然得到缺少的return语句错误。代码如下:Java 即使在每个条件中添加return语句后也会出错,java,return,Java,Return,为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
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;
}
}
public int searchInsert(int[]nums,int target){
for(int i=0;i两个返回语句都在if构造内。for循环外的主块内没有返回。从语法上讲,这可能有效,但在编译时,编译器希望for循环外有一个返回语句。即使它是“return null”,很好。您看起来很困惑。您粘贴的代码没有任何作用。具体来说,因为通过“for”的每个路径都返回,所以这个for循环将分析nums[0],这就是它所要做的:如果nums[0]等于或高于目标,它将返回0,如果不是,它将返回1
javac无法编译它,因为您的代码没有说明如果nums为空应该返回什么。您添加了不应该返回的返回。大概您想要的是去掉最后一个else return i;
部分,并在最底部添加return nums.length;
(这就是问题的答案:如果nums数组完全为空,或者所有元素都高于目标值,我应该在什么索引处插入?如果nums
为空数组怎么办?@Eran即使将其设为(int i=0;i更改以在循环后添加默认的return语句。编译器相信您可以在不返回值的情况下到达方法的末尾。