2014-02-27 71 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型的,你的循環是不能保證實際運行,並且沒有在方案中有返回值(因此輸入),你的循環不會運行。

相關問題