1
这是我正在研究的一个大项目的一部分。为什么元素没有被插入到数组中?
这里的问题是在varlist
在第一每个循环的循环我插入一个数字,我计算,但后来当我想使这个数组的新排序的版本我得到这个错误:
" Type mismatch: cannot convert from void to float[] "
我看不出为什么我会得到这个错误,难道是因为我用int分隔float吗?
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);
}
'Arrays.sort(varlist);'没有返回类型。它对您在参数中传递的数组进行排序。如果你想保留'varlist'数组,你必须(深)先在'sortedarray'中复制它,然后对'sortedarray'进行排序 – 2014-12-04 13:50:47