这是我正在进行的一个大项目的一部分。
这里的问题是在第一个for循环的每个循环中的varlist
我插入一个我计算的数字,但是后来当我想要创建这个数组的新排序版本时,我得到了这个错误: / p>
" Type mismatch: cannot convert from void to float[] "
我看不出为什么会出现这个错误,可能是因为我将一个浮点数除以int?
public static float applyVarianceFilterOnDataset(
GeneExpressionDataset geneExpressionDataset, int numberOfGenesToKeep) {
int rows = geneExpressionDataset.genesNumber;
int cols = geneExpressionDataset.samplesNumber;
float[] varlist = new float[rows];
for (int i = 0; i < rows; i++) {
float var = 0;
for (int j = 0; j < cols; j++) {
float mean = calcMean(geneExpressionDataset.dataMatrix[i], cols);
var = (float) (Math.pow(
(geneExpressionDataset.dataMatrix[i][j] - mean), 2) + var);
}
varlist[i] = (var / cols);
}
float[] sortedarray = new float[rows];
sortedarray = Arrays.sort(varlist);
float thenum = sortedarray[rows-numberOfGenesToKeep-1];
}
geneExpressionDataset.genesNumber = numberOfGenesToKeep;
return thenum;
}
public static float calcMean(float[] ary, int num) {
float sum = 0;
for (float i : ary) {
sum += i;
}
return (sum / num);
}
答案 0 :(得分:2)
Arrays.sort(varlist)
排序数组。所以你传递它的数组,在方法退出后,你的数组就被排序了。