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