2016-11-12 85 views
0

搜索我需要編寫一個方法,當通過了雙陣列ARR,和一個int值目標,返回其整數部分等於目標的項目的第一次出現的索引。初學者通過陣列

例如,如果arr = {1.2,3.6,5.2,9.2,5.6},並且target = 5,則目標必須返回2,如果array爲null,則返回-1。

到目前爲止我的代碼是

public static int yes(double[]arr, int target){ 
    if (arr == null){ 
     return -1; 
    } 

    for (int i= 0; i < arr.length(); i++){ 
     if(arr[i] == target) 
      return i; 
    } 

    return 1; 
} 

和那裏有一個編譯錯誤,我只是不明白雙和int之間的轉換?由於

+0

Double是十進制數(簡化,反正)。整數是一個整數,捨去(截斷)。 比較是5.2是一樣的5不會返回true。你可以通過這樣做將double轉換爲int:'(int)arr [i]' –

+1

雖然這段代碼非常簡單,但下一次當您尋找編譯器錯誤的幫助時,您應該提供(a)錯誤消息和(b)它發生的路線。 –

回答

2

嘗試檢查時看到您鑄造arr[i]int如果它等於你的目標:

for (int i= 0; i < arr.length; i++){ 
      if((int)arr[i] == target) 
       return i; 
     } 

這樣做會下降的arry[i]小數部分,使之成爲整數,從而可比你目標。

+0

不知道這是那麼簡單,謝謝你們! –

+0

沒問題,很高興我/我們可以提供幫助。 :) – Gulllie

1
public class Main{ 
    public static void main (String[] args) { 
     double[] arr = new double[]{1.2, 3.6, 5.2, 9.2, 5.6}; 
     int target = 31; 
     System.out.println(yes(arr,target)); 
    } 
    public static int yes(double[] arr, int target){ 
     if (arr == null){ 
      return -1; 
     } 

     for (int i= 0; i < arr.length; i++){ 
      if((arr[i] - target) >= 0.0 && (arr[i] - target) < 1.0) 
       return i; 
     } 

     return -1; 
    } 
} 
0

你的代碼是完美的,你只是錯過了投雙

(int) arr[i] == target 


public static int yes(double[]arr, int target){ 
    if (arr == null){ 
     return -1; 
    } 

    for (int i= 0; i < arr.length(); i++){ 
     if((int) arr[i] == target) 
      return i; 
    } 

    return 1; 
} 
0

以此作爲你的for循環

for (int i= 0; i < arr.length(); i++){ 
     if((int)arr[i] == target) 
      return i; 
    } 

給予好評,如果有幫助!

0

下面的代碼應該可以工作。它將與目標進行比較的雙精度值轉換爲整型。因此,示例double數組{1,2,3,3,5,5.2,9.2,5.6}將變爲{1,3,5,9,5},並且與目標進行比較時,您將獲得正確的返回值。如果你沒有在數組中找到目標,我建議你讓函數返回-1。祝你好運,快樂的編碼!

public static int yes(double[]arr, int target){ 
    if (arr == null){ 
     return -1; 
    } 

    for (int i= 0; i < arr.length; i++){ 
     if((int)arr[i] == target) return i; 
     //use (int) to cast the double to an int. 3.9 and 3.2 would both become an int of 3 
    } 

    return 1; 
    //returns 1 if target is not in arr 
} 
0
for (int i = 0; i < arr.length(); i++) { 
    if ((int) arr[i] == target) 
     return i; 
} 

這是確定的,但我認爲這也許更好。

for (int i = 0; i < arr.length(); i++) { 
    if (arr[i] == (double)target) 
     return i; 
}