将2d双数组转换为2d int数组

时间:2011-03-08 22:10:20

标签: java arrays multidimensional-array copy

我想将2d双数组转换为另一个2D整数数组。 double数组填充的值小于1.我想要做的是创建一个新的int [] []数组,并使用if else语句将新数组中的值设置为1和0.我已经发布了我的尝试但我不知道在哪里初始化我的int数组,这个名为intMatrix。

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。

3 个答案:

答案 0 :(得分:1)

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++){
...

答案 1 :(得分:1)

你的if是检查错误的数组。

intMatrix [I] [Y] =(int)的speaRealMatrixArray [I] [Y];如果我们假设给定矩阵中的值是&lt; 1.在下一行,你检查它的值,无论如何必须为0。删除作业并检查speaRealMatrixArray [i] [y]&lt; 0.6

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

答案 2 :(得分:1)

正确初始化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;
}