2014-02-27 69 views
0

为什么说方法必须返回int类型?返回是整数此方法必须返回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; 
    } 
} 
+4

如果'i> = nums.length'会发生什么? –

+2

是的,但如果for循环未执行,则不返回任何内容。此外,你的其他东西不是你正在寻找的东西。目前,您只需检查数组中的第一个数字是否是您搜索的值。摆脱这一点。 –

+0

'nums [value]'是返回错误的东西。如果用户说他们想要搜索100,而100是在数组中,那么您想要返回什么? 'nums'的第100个元素?即使'nums'只有8个元素长?这是行不通的。 – ajb

回答

1

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

0

如果nums为null或空,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 
} 
0
万一 nums[]

为空数组或空。 (但是空值使空指针异常nums.length。)在这种情况下,循环将不会执行,并且它将是一个无效返回,所以为了避免这种情况,您必须声明一个默认的return语句。

-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; 
} 
+0

如果您要修复程序的逻辑,请正确执行。 – ajb

0

虽然你的返回类型循环是int型的,你的循环是不能保证实际运行,并且没有在方案中有返回值(因此输入),你的循环不会运行。

相关问题