2014-12-04 69 views
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); 
} 
+5

'Arrays.sort(varlist);'沒有返回類型。它對您在參數中傳遞的數組進行排序。如果你想保留'varlist'數組,你必須(深)先在'sortedarray'中複製它,然後對'sortedarray'進行排序 – 2014-12-04 13:50:47

回答

2

Arrays.sort(varlist) sort array inplace。所以你傳遞數組,並在方法退出後,你的數組被排序。

相關問題