我在最后两行尝试从Math类调用该方法时遇到错误。错误是说“ Math类型的方法computeAverage(int [])不适用于参数(ArrayList)”。
我不确定为什么会遇到这个问题。
这是我的数学课:
public class Math {
public static double computeAverage(int[] numbers) {
int sum=0;
for( int i=0 ; i<numbers.length ; i++){
sum+=numbers[i];}
return (sum/numbers.length);
}
public static double computeAverage(double[] numbers) {
double sum=0;
for( int i=0 ; i<numbers.length ; i++){
sum+=numbers[i];}
return (sum/numbers.length);
}
}
这是我的主音:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Number> d = new ArrayList();
ArrayList<Number> numbers = new ArrayList();
d.add(1);
d.add(2);
d.add(3);
d.add(16);
d.add(20);
d.add(100);
numbers.add(21.7);
numbers.add(37.5);
numbers.add(6.3);
Math.computeAverage(d);
Math.computeAverage(numbers);
}
}
答案 0 :(得分:0)
int[]
和double[]
是原始数组,它们与ArrayList
之类的集合类不直接兼容。
自从您提到了多态性以来,我相信您要尝试的是拥有一个既可以在int
和double
上运行的方法。您的main
方法中的设置非常有用:您已经可以将int和double值都添加到ArrayList<Number>
中,因为Number
是Integer
和{的超类{1}}。
您需要更改的是Double
方法。您不需要两个副本,只需要一个带有computeAverage
的副本,该副本就可以处理任何类型的数字:
List<Number>