2017-02-13 534 views
-2

我有一個整數值列表(正數和負數)。我需要計算每個值的百分比。 Java中是否有任何API來實現這一目標?計算數字列表的百分比

實施例1 -

10, 40, 60, -15, -25, 30, -10, -50, 120

-50 (lowest value) - 0% -25 - ? -15 - ? -10 - ? 10 - ? 120 (highest value) - 100%

實施例2 -

90,45,13,-89,-95,-150,200,250,67

-150(最低值) - 0% -95 - ? -89 - ? 13 - ? 250(最高值) - 100%

+0

目前尚不清楚您要求什麼。提供幾個輸入示例以及每種情況下的預期輸出。 –

+0

百分比反映比率95%= 95/100,通常是有限的[0,100]。除非您提供基數或反映相對變化,否定百分比和大於100的值通常沒有意義:原始值的120%,變化的-25%等。您能否澄清計算的基礎?你想用它達到什麼目的? – artdanil

回答

0

我不知道,如果你問正火基於索引排序或VALU後即但我認爲基於價值更有意義。例如,如果你的數組是0, 1, 10,最終的百分比將是0->0%, 1->10%, 10->100%

爲此,你將基本上做一個規範化。

我不記得確切的語法,但糾正它,如果任何語法是錯誤的。

int arr[] = {10, 40, 60, -15, -25, 30, -10, -50}; 

List b = Arrays.asList(ArrayUtils.toObject(arr)); 

int mn = Collections.min(b); 
int mx = Collections.max(b); 

int perc_arr = new int[arr.length]; 
for(int i = 0; i < arr.length; i++) 
    perc_arr[i] = (arr[i]-mn)/(mx-mn)*100; 
0

不需要API /外部類。你可以製作一個方法。下面是一些基本的僞-ESK Java來讓你開始

public int average (arraylist a or int[] a){ 
    int r = 0; 
    for (int i = 0; i< a.length or a.size(); i++){ 
     r+= a[i] or r+= a.get(i); 
    } 
    r = (r/a.length) or (r/a.size()); 
    return r; 
} 
1

你不需要這個的API,只存儲號碼數組,排序,並獲得百分比如下:

int []array = new int[n]; 
//insert numbers in the list 
Arrays.sort(); 

假設你需要找到一個給定數量'x'的百分比,那麼這樣做:

int index = ArrayUtils.indexOf(array, x); 
int percentage = ((double)(index + 1)/n)*100