2017-11-11 69 views
-2

我有一個五個integerscount[5]陣列,我想檢查它們的差異是否大於3如何檢查java中的5個數字的背離

蠻力可以做:if(count[5]-count[4])>3) ,if(count[5]-count[3]>3)

有沒有更好的辦法做到這一點?

+0

是數組的重要順序?使用循環遍歷每個元素檢查下一個元素之間的差異將會起作用。看一下「增強的for循環」,並使用它遍歷每個元素,測試其差異是否大於3.根據您希望輸出的樣子,這將是一個可用的解決方案。 – OnlySteveH

+4

在一次迭代中,您可以找到'min'和'max'值並檢查它們的差異。 – alfasin

+0

@OnlySteveH如何迭代並檢查元素與下一個元素之間的差異的循環如何找到最大的差異,假設它在沒有連續的項目之間? – alfasin

回答

-2

如果數組中的數字要增加,可以使用for循環。

int[5] count = {1,2,3,4,5} 
for(int i = 0; i < count.length; i++){ 
    for(int j = 0; j < count.length; j++){ 
    if(((count[i] - count[j]) > 3) || ((count[i] - count[j])<-3)){ 
     //TODO 
    } 
    } 
} 
+1

你didn不檢查這種情況,例如:'count [0] -count [4]' – 2017-11-11 15:22:13

+1

另外,如果'count [0] = - 10'和'count [1] = - 2'怎麼辦? 'count [0] -count [1] = - 8' – 2017-11-11 15:25:23

+0

我想新的代碼涵蓋了你說的兩種情況... –

0

不是一個非常有效的方式做到這一點,但

Integer min = Arrays.<Integer>asList(arr).stream().min(Comparator.naturalOrder()); 
Integer max = Arrays.<Integer>asList(arr).stream().min(Comparator.naturalOrder()); 
Integer spread = max - min; 

會做的伎倆。

如果數組很大,您將需要在同一時間針對最小值和最大值執行帶有運行跟蹤器的reduce。讓我知道你是否真的需要這個。

0

這裏一個Java代碼實現:

public static boolean diff(int[] ar) { 
     boolean result = true; 
     for (int i = 0; i < ar.length; i++) { 
      for (int j = 0; j < ar.length; j++) { 
       if (Math.abs(ar[i] - ar[j]) > 3) { 
        result = false; 
       } 
      } 
     } 
     return result; 
}