假设我在Java语言中有一个short[] thisArray,我需要根据这个数组中元素的数量来计算平均值。但是显然,.length将返回一个整数来表示thisArray的长度。
我不能将它转换为int数组或int,因为它不允许将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;发布于 2017-08-03 13:40:24
如果你确定平均值可以放入一个短变量中,你只需对结果进行转换:
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);发布于 2017-08-03 13:40:20
您需要显式转换结果
short result = (short)( sum / thisArray.length );当您将int值赋给short变量时,编译器会保护您不会丢失数据。提供强制转换是告诉编译器你知道你在做什么的通常方式,这个操作是OK的。
https://stackoverflow.com/questions/45475685
复制相似问题