此方法必须返回int类型的结果?

时间:2014-02-27 16:16:15

标签: java return-value

为什么说该方法必须返回int类型?返回值是整数

public static int search(int[] nums)
{
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What value do you want?");
    int value = keyboard.nextInt();
    for(int i=0;i<nums.length;i++)
    {
        if(nums[i] == value)
            return nums[value];
        else
            return -1;
    }
}

5 个答案:

答案 0 :(得分:1)

请确保在跳过循环时知道返回的类型。

答案 1 :(得分:0)

如果nums为空或空,则for循环永远不会被执行,因此您不返回任何内容

这样做

public static int search(int[] nums)
{
  Scanner keyboard = new Scanner(System.in);
  System.out.println("What value do you want?");
  int value = keyboard.nextInt();
  for(int i=0;i<nums.length;i++)
  {
    if(nums[i] == value)
    return nums[value];
    else 
    return -1;
 }
 return 0;   // default value
}

答案 2 :(得分:0)

如果nums[]为空数组或为null。 (但是null值会产生一个nullpointer异常nums.length。)在这种情况下,循环将不会执行,并且它将是一个void返回,所以为了避免这种情况,你必须声明一个默认的return语句。

答案 3 :(得分:0)

虽然循环中的返回类型 循环的类型为int,但您的循环不能保证实际运行,并且您没有返回值(因此类型)在你的循环运行的场景中。

答案 4 :(得分:-1)

并非所有路径都会返回某些内容 您可以通过在for循环后添加返回或使用返回变量来避免这种错误。它也看起来像你试图在数组中搜索用户输入的数字。如果是这样,您不需要其他情况,或只检查nums中的第一个数字。

public static int search(int[] nums)
{
    int ret = -1;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What value do you want?");
    int value = keyboard.nextInt();
    for(int i=0;i<nums.length;i++)
    {
       if(nums[i] == value)
       {
           ret = nums[value];
           break;
       }
    }
    return ret;
}