java中 泛型编写功能类求int ,float,double等类型的平均值,代码怎么写?

packageon.itcast.p8.Arrays.Demo;classArraysGenericDemo1{//采用泛型编写一个针对int型数组,float型数组,d... package on.itcast.p8.Arrays.Demo;

class ArraysGenericDemo1 {
//采用泛型编写一个针对int型数组,float型数组,double数组求平均值的功能类,然后再编写一个测试类,测试此功能是否正确。
public static<T extends Number> T avg(T [] arr){
T sum=0;
T avg;
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}
avg=sum/arr.length;
return avg;
}
}
public class ArraysGenericDemo{
public static void main(String[] args){
double[] arr={4.2,3.1,2.4,5.5,6.6,7.3};
double avg=ArraysGenericDemo1.avg(arr);
System.out.println(avg);

}
}

单个写可以,一改成泛型就各种报错,我知道应该是T那个地方有问题,可不知道怎么改。
展开
 我来答
duoloniori
推荐于2017-10-12 · TA获得超过456个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:233万
展开全部

这个估计是不可能的,因为这个关系到精度的问题,比如说你传入的参数里面包含了整型和浮点型,那这样精度怎么算?还有,整型和浮点型都满足返回条件,那最后你是要返回整型还是浮点型?如果要求这些类型的平均值,那还是老老实实的用方法重载吧,反正最多也就三个方法。

public static public static int avg(int[] array) {}
public static public static float avg(float[] array) {}
public static public static double avg(double[] array) {}
更多追问追答
追问
可是书上有这题目啊,说明了要用泛型写。。
追答

要不退而求其次,干脆把所有类型都换成double来算

public static <T extends Number> double avg(T[] arr) {
    double sum = 0;
    double avg;
    for (int i = 0; i < arr.length; i++) {
sum += arr[i].doubleValue();
    }
    avg = sum / arr.length;
    return avg;
}
百度网友600efd4
2020-05-17
知道答主
回答量:26
采纳率:0%
帮助的人:8529
展开全部

就是这题吧?我也遇到了……

追答
我这里看不到你是啥时候发的,所以不知道你会了没有
如果你会的话,能顺便教一下我吗?🐶🐶
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式