2017-02-27 61 views
-3

任務:給定一個int數組,如果值3正好出現在數組中,則返回true,否則3將彼此相鄰,否則返回false。Java在數組中找到三個數

這是我當前的代碼:

public static boolean contains(int[] arr, int item) { 
    for (int n : arr) { 
    if (item == n) { 
     return true; 
    } 
    } 
    return false; 

回答

0
public static boolean contains(int[] arr, int item) { 
    // Count of number of occurences 
    int count=0; 

    for (int i = 0; i < arr.length; i++) { 
    if(arr.length-1 == i){ 
     if(arr[i] == item) 
      count++; 
    }else { 
     if (arr[i] == item && arr[i] + 1 == item) 
      return false; 
     if(arr[i] == item) 
      count++; 
      } 
     } 
     return count == 3; 
    } 
+0

代碼中的'n'是什麼? –

+0

好的,但程序的其他部分在哪裏? –

+0

您是否在尋找接受輸入的代碼?你應該可以做到這一點。我們給你的方法的邏輯.. –

1

你應該迭代這個數組並計算時代的項目陣列的數量。此外,您需要跟蹤前一個項目是否是您正在查找的項目。例如:

public static boolean contains(int[] arr, int item) { 
    int count = 0; 
    boolean prev = false; 
    for (int n : arr) { 
     if (n == item) { 
      if (prev) { 
       return false; 
      } 
      ++count; 
      prev = true; 
      if (count > 3) { // Optimization - could be removed 
       return false; 
      } 
     } else { 
      prev = false; 
     } 
    } 
    return count == 3; 
} 
+0

好了,但如果是程序的其他部分? –

+0

我只是看着你的代碼,無法弄清楚你是如何對下一個值進行檢查的,並且我通過了它,這是一個聰明的解決方案! –

0

這很簡單。請看下面的修訂版本的代碼:

public static boolean contains(int[] arr, int item) { 
    int count=0; 
    for (int i=0;i<arr.length;i++) { 
    if (item == arr[i]) { 
     if(i+1 < arr.length && item == arr[i+1]) 
      return false; 
     else count++; 
    } 
    } 

    return (count == 3); 
} 
+0

好的,但程序的其他部分在哪裏? –

+0

你可以簡化最後一行返回計數=== 3 –

+1

@EduardoDennis,絕對。我剛剛編輯它。感謝您的支持。 – VHS

-1
public static contains(int[] arr) { 
int index = -2; 
int count = 0; 
for (int i = 0; i < arr.length; i++) { 
    if (arr[i] == 3) { 
    if (i-1 != index) { 
     index = i; 
     count++; 
    } else { 
     contains = false; 
     break; 
    } 
} 

if (count != 3) { 
    contains = false; 
} 
return contains; 
} 
+0

該方法需要接受正在查找的號碼。 –

+0

在你的問題中,你特別說「3」,並沒有說任何關於接受正在查找的號碼。 – MariaVincent