Java 即使在每个条件中添加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

为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;
    }
}
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语句。编译器相信您可以在不返回值的情况下到达方法的末尾。