2017-08-03 320 views
1

假設我在JAVA中有一個short [] thisArray,並且需要根據此數組中元素的數量計算平均值。但顯然,.length將返回一個int數來表示thisArray的長度。在JAVA中計算短型數組的平均數

我無法將其轉換爲int Array或int,因爲不允許將int轉換回short。我確實需要有一個簡短的結果並存回另一個簡短的[] []。

如何避免此經典錯誤: 錯誤:不兼容的類型:可能有損轉換從int到短 short result = sum/thisArray.length;

public static short getSum(short[] sumArray) { 
    short sum = 0; 
    for(short i : sumArray) { 
    sum += i; 
    } 
    return sum; 
} 

sum = getSum(thisArray); 

short result = sum/thisArray.length; 
+1

問:'短總和= 0;'請問兩個短整型的總和總是放不下了另一個短整型? – markspace

回答

3

如果你肯定知道的平均可以放入短變,你就必須把結果:

short result = (short)(sum/thisArray.length); 

我也想改變sumint,以減少溢出風險(其如果總和大於32767,則可能發生)。

總結:

public static int getSum(short[] sumArray) { 
    int sum = 0; 
    for(short i : sumArray) { 
    sum += i; 
    } 
    return sum; 
} 

... 

int sum = getSum(thisArray); 

short result = (short) (sum/thisArray.length); 
+0

短陣列的平均值可以始終適合短變量,短陣列的總和可能不會。 – Will

+0

@是的,這是正確的。 – Eran

1

你需要從丟失數據明確地把結果

short result = (short)(sum/thisArray.length); 

編譯器保護你,當你分配一個int值到short變量。提供演員表是告訴編譯器你知道你在做什麼的常用方式,而且這個操作是可以的。