2016-08-20 55 views
0

我不擅長英文,因此標題可能會令人困惑。從數組中找到最接近的整數向上取整

我想要做的事:

我有一個int數組10, 20, 30,我想基於number可變

如果int number = 10;

我想要的結果,從它取號從「方法」變爲20

if int number = 21;

我想要的結果是30

我不知道如何正確解釋,但我希望這是可以理解的。


這是幹什麼用的?我有一個球員庫存,可以有不同的尺寸9, 18, 27, 36, 45, 54,我有一個項目內容,例如5。所以我想要有庫存大小9。如果商品內容尺寸爲19,則廣告資源尺寸應爲27,而不是18。這是我的問題。


我嘗試了很多不同的迭代計算,但每次嘗試都是非常不成功的。 我有這種方法從數組中獲得最接近的值,但我不知道如何將其更改爲四捨五入。

public int getClosestInteger(int value, int[] numbers) { 
     int distance = Math.abs(numbers[0] - value); 
     int id = 0; 
     for (int i = 1; i < numbers.length; i++){ 
      int dist = Math.abs(numbers[i] - value); 

      if(dist < distance){ 
       id = i; distance = dist; 
      } 
     } 
     return numbers[id]; 
    } 

我該怎麼做?

+0

'如果項目內容規模爲19,庫存大小應該是27,不是18,這是我的problem.' ...你解釋的邏輯是沒有意義的話,因爲'19'應該'對待20',比'27'更接近'18'。如果你想得到答案,你需要清楚地表達你的邏輯。 –

+0

它是有道理的。如果商品尺寸是「19」 - 我想要**更大**庫存尺寸,在這種情況下是「27」。由於我正在改裝的遊戲,我無法擁有庫存大小= 20。它必須是'9,18 ...'; p 當物品大小爲「19」時,庫存大小等於'18'不是一個好主意。一件物品會消失。 – SocketByte

回答

0

如果我正確理解你的問題,這應該工作:

public int getClosestInteger(int value, int[] numbers) { 
    for (int i = 0; i < numbers.length; i++){ 
     if(value < numbers[i]){ 
      return numbers[i]; 
     } 
    } 
} 
+0

謝謝!有用! ;) – SocketByte

+0

這假定數組'數字'按升序排序。 –

+0

@TimBiegeleisen一個簡單的Arrays.sort(數字)會完成剩下的工作,但在他的問題中它看起來像一個有序數組。 – Sha7x

0

它應該工作。

for (int i = 0; i < numbers.length; i++){ 
     if(numbers[i] > value){ 
      System.out.println(numbers[i]); 
      break; 
     } 
    } 
+0

也謝謝。 :) – SocketByte

相關問題