为什么我会遇到“missing return statement”这个错误?

r6l8ljro  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(3055)

这个问题在这里已经有答案了

if/for/while中的“缺少返回语句”(7个答案)
8天前关门了。
导入java.util.arrays;
公共类解决方案{

public static int findDuplicate(int[] arr) {
    int n=arr.length;
    Arrays.sort(arr);
    for(int i=0;i<n-1;i++)
    {
        if(arr[i]==arr[i+1])
        {
           return arr[i];
        }
    }
}

}

kyks70gy

kyks70gy1#

问题是,如果逻辑没有输入“if”,就不会返回任何内容。考虑添加一个默认值来返回。
你可以这样修改代码

package com.stackoverflow.question;

import java.util.Arrays;

public class Solution {

    public static int findDuplicate(int[] arr) {
        int n = arr.length;
        Arrays.sort(arr);

        for (int i = 0; i < n - 1; i++) {
            if (arr[i] == arr[i + 1]) {
                return arr[i];
            }
        }

        return 0; //Default value to return
    }
}
oiopk7p5

oiopk7p52#

那是因为如果你的 arr[i]==arr[i+1] never为true,函数不会返回任何内容,但必须返回某些内容,因此:

public static int findDuplicate(int[] arr) {
    int n=arr.length;
    Arrays.sort(arr);
    for(int i=0;i<n-1;i++)
    {
        if(arr[i]==arr[i+1])
        {
           return arr[i];
        }
    }
    return -1;//If if the is stament is never true
}
fcg9iug3

fcg9iug33#

你需要处理没有复制品的情况。您可以返回-1,这是在string.indexof等位置使用的约定,也可以抛出异常,例如nosuchelementexception

public static int findDuplicate(int[] arr) {
    int n=arr.length;
    Arrays.sort(arr);
    for(int i=0;i<n-1;i++)
    {
        if(arr[i]==arr[i+1])
        {
           return arr[i];
        }
    }
    return -1;
}

相关问题