2014-12-04 74 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。所以你传递数组,并在方法退出后,你的数组被排序。

相关问题