【发布时间】:2017-01-31 22:08:12
【问题描述】:
我无法在我的代码中搜索错误,我必须计算每行的平均值,而不使用不符合条件的行,具体取决于排除的百分比,例如,在下面的例子我们有 9 行。如果我们排除 15 % 意味着我们必须丢弃第一行和最后一行。
int [][] m={// row average
{1,3,1,3}, //2
{5,6,7,8,9},// 7
{7},//7
{6,7,6,7},//6.5
{6,5,6,5},//5.5
{9,9},//9
{4,4,3,8,6},// 5
{400,4}, //202
{8,8,6,8,10}};//8
// average of row averages 28.0 (not adjusted)
// adjusted average depends on percentage excluded
这只是一个数组示例。
public static double adjustedAverage (int[][] m,int percentageExcluded){
double average[]= new double[m.length];
double excluded = m.length*percentageExcluded/100.;
double suma=0;
double cantidad=0;
double averageResult;
//creamos un array con las medias de cada fila
for (int fila=0; fila < m.length;fila++){
int rowTotales=0;
for (int columna=0; columna <m[fila].length;columna++){
rowTotales += m[fila][columna];
}
average[fila]= rowTotales / m[fila].length;
}
这部分我已经知道是正确的,我用每行的平均值创建了一个新数组。
//ordenamos el array
Arrays.sort(average);
在这部分中,我对数组进行排序以排除最大和最低平均值
//Calculamos la nueva media excluyendo los que no cumplen las condiciones
for (int columna=0;columna < average.length;columna++){
if (columna>=excluded && columna<=average.length-(excluded)){suma=suma+average[columna];
cantidad++;}
}
averageResult = suma/cantidad;
System.out.println("La mediana ajustada es"+averageResult);
return averageResult;
在上面的示例中,percentageExcluded 为 15 %,结果必须是 6.8,但我的程序会打印 7。知道我失败的地方吗?
【问题讨论】:
-
你需要调试你的代码。
-
另外,请尽可能使用英文名称,因为当我看到外语变量时,我做的第一件事就是转到下一个问题。