java中的方法返回类型错误

时间:2017-08-04 17:34:21

标签: java sum

我正在从Leetcode做“两个和”问题,我正在尝试提出一种算法,给定一个整数数组和一个目标整数,检查数组中是否有任何整数对添加达到目标。我意识到这不是最有效的算法,但我尝试做的是使用for循环来检查所选元素是否未被添加到自身,然后遍历所有对。这是我的代码:

package leetcodeproblem;

    public class Leet {

    public int[] twoSum(int[] nums, int target) {

        for(int i=nums[0];i<nums.length;i++){
            for(int x:nums){
                if (x!=i & (i+x)==target){
                    int i2 = java.util.Arrays.asList(nums).indexOf(i);
                    int x2 = java.util.Arrays.asList(nums).indexOf(x);
                    int[] answer = {i2,x2};

                    return answer;
                }else{
                    return nums;
               }
           }      
       }
   }

我不断收到此错误:“此方法必须返回int []”

类型的结果

我认为我有两种可能性都包含在if / else语句中,并且该函数在两种情况下都返回一个int []。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

如果nums[0]2nums.length = 1会怎样?

循环从不运行,因为i < nums.length将为false,因此最后没有return语句。只需在最后一个花括号之前添加return nums;,它就会编译

答案 1 :(得分:1)

有可能for循环甚至不会运行一次然后都不会执行return语句,所以在for循环之外写一个return语句。

答案 2 :(得分:1)

您的for循环有可能无法运行,因此方法中不会返回任何内容。在for循环后添加return null;

答案 3 :(得分:1)

Java编译器认为循环可能不会执行(例如,nums [0]大于长度)。在这种情况下,您的方法不会调用返回。所以你必须在最后做出回报。

public int[] twoSum(int[] nums, int target) {

    for(int i=nums[0];i<nums.length;i++){
           for(int x:nums){
               if (x!=i & (i+x)==target){
                  int i2 = java.util.Arrays.asList(nums).indexOf(i);
                  int x2 = java.util.Arrays.asList(nums).indexOf(x);
                  int[] answer = {i2,x2};

                  return answer;

               }else{
                   return nums;
               }


           }

       }

       return nums; //or whatever you want (maybe null, or an empty array)
  }