繁体   English   中英

将二维双精度数组转换为二维int数组

[英]convert a 2d double array to a 2d int array

我想将二维双精度数组转换为另一个二维整数数组。 double数组填充的值小于1。我要创建一个新的int [] [] array,并使用if else语句将新数组中的值设置为1和0。但是我不确定在哪里初始化我的称为intMatrix的int数组。

public int[][] readCorrMatrix(){

    String filename=ReadFile.getPath();
    double[][]rawDataMatrix=ReadMatrix.readDataMatrix(filename, ",");
    RealMatrix speaRealMatrix=Spearmans.calcSpearMatrix(rawDataMatrix);
    double[][]speaRealMatrixArray=speaRealMatrix.getData();
    int[][]intMatrix=null;
    for(int i=0; i<speaRealMatrixArray.length;i++){
        for(int y=0; y<speaRealMatrixArray[i].length;y++){

            intMatrix[i][y]=(int)speaRealMatrixArray[i][y];
            if(speaRealMatrixArray[i][y]<0.6)
            {
                intMatrix[i][y]=0;
            }
                else
                {
                    intMatrix[i][y]=1;
                }               
        }
    }
    return intMatrix;
}

你们对我在做什么错有任何想法。 在此先感谢Jetnori。

int[][]intMatrix= new int[speaRealMatrixArray.length][];
...
for(int i=0; i<speaRealMatrixArray.length;i++){
      intMatrix[i] = new new int[speaRealMatrixArray[i].length];
      for(int y=0; y<speaRealMatrixArray[i].length;y++){
...

您的if正在检查错误的数组。

intMatrix [i] [y] =(int)speaRealMatrixArray [i] [y]; 如果我们假设给定矩阵中的值<1,则它将始终为0。在下一行中,您必须检查其值,该值必须始终为0。 删除分配并检查speaRealMatrixArray [i] [y] <0.6

另外,您还必须正确初始化int数组。

正确初始化intMatrix。

也代替

intMatrix[i][y] = (int) speaRealMatrixArray[i][y];
if (intMatrix[i][y] < 0.6) {
    intMatrix[i][y] = 0;
} else {
    intMatrix[i][y] = 1;
}  

尝试

if ( speaRealMatrixArray[i][y] < 0.6) {
    intMatrix[i][y] = 0;
} else {
    intMatrix[i][y] = 1;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM