public static double getAerage(int[] arr) {
int max = arr[0];
int min = arr[0];
int sum = 0;
if (arr != null) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < max) {
min = arr[i];
}
sum += arr[i];
return (sum - max - min) * 1.0 / (arr.length - 2);
}
} else {
return 0;
}
}(这里一直报错)
}
报错的原因是因为不能保证所有的分支都有返回值,把 for 循环内部的 return 移到外部就可以了。
public static double getAerage(int[] arr) {
int max = arr[0];
int min = arr[0];
int sum = 0;
if (arr != null) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < max) {
min = arr[i];
}
sum += arr[i];
}
return (sum - max - min) * 1.0 / (arr.length - 2);
} else {
return 0;
}
}
18行return 0 改成return 0.0;
16行移到17行下面
代码存在几个问题
public static double getAerage(int[] arr) {
int length = arr.length;
if (length != 0) {
int max = arr[0];
int min = arr[0];
int sum = 0;
for (int i = 0; i < length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < max) {
min = arr[i];
}
sum += arr[i];
}
return (sum - max - min) * 1.0 / (length - 2);
}
return 0;
}