【问题标题】:why Am i getting this error of 'missing return statement'? [duplicate]为什么我会收到“缺少退货声明”的错误? [复制]
【发布时间】:2021-04-08 00:58:34
【问题描述】:

导入 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];
        }
    }
}

}

【问题讨论】:

  • 编译失败./Solution.java:14: 错误:缺少返回语句} ^ 1 错误

标签: java arrays duplicates


【解决方案1】:

问题是,如果逻辑没有输入“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
    }
}

【讨论】:

  • 这里 1
  • 您的问题是代码无法编译。您能否举例说明问题所在?
【解决方案2】:

您需要处理没有重复的情况。您可以返回 -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;
}

【讨论】:

    【解决方案3】:

    那是因为如果你的arr[i]==arr[i+1] never 为真,该函数不会返回任何东西,但它必须返回一些东西,所以:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 2012-10-04
      • 2013-07-11
      • 2011-03-30
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多