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那个地方有问题,可不知道怎么改。 展开
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那个地方有问题,可不知道怎么改。 展开
展开全部
这个估计是不可能的,因为这个关系到精度的问题,比如说你传入的参数里面包含了整型和浮点型,那这样精度怎么算?还有,整型和浮点型都满足返回条件,那最后你是要返回整型还是浮点型?如果要求这些类型的平均值,那还是老老实实的用方法重载吧,反正最多也就三个方法。
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询