计算JAVA中短类型数组的平均值

Posted

技术标签:

【中文标题】计算JAVA中短类型数组的平均值【英文标题】:Calculation the average of short type array in JAVA 【发布时间】:2017-08-03 05:38:17 【问题描述】:

假设我在 JAVA 中有一个 short[] thisArray,我需要根据这个数组中的元素数量计算平均值。但显然,.length 会返回一个 int 数字来表示 thisArray 的长度。

我无法将它转换为 int Array 或 int,因为它不允许将 int 转换回 short。我确实需要一个简短的结果并存储回另一个 short[][]。

如何避免这个经典错误: 错误:不兼容的类型:从 int 到 short 的可能有损转换 短结果 = 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;

【问题讨论】:

问题:short sum = 0; 两个短整数之和是否总是适合另一个短整数? 【参考方案1】:

如果您确定平均值可以适合短变量,则只需转换结果即可:

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

我还将sum 更改为int,以降低溢出的风险(如果总和大于 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);

【讨论】:

短数组的平均值总是可以放入短变量,短数组的总和可能无法。【参考方案2】:

您需要显式转换结果

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

当您将int 值分配给short 变量时,编译器会保护您不丢失数据。提供强制转换是告诉编译器您知道自己在做什么的常用方法,并且此操作是可以的。

【讨论】:

以上是关于计算JAVA中短类型数组的平均值的主要内容,如果未能解决你的问题,请参考以下文章

让我的函数计算数组 Swift 的平均值

java利用数组求平均成绩

银行排队问题平均等到时间计算java?

用java二维数组完成两个同学三科成绩,计算每位同学的总分, 各科的平均分

java 关于平均值的计算!

用数组求一个班级的平均成绩,请写出Java设计程序。